Finding a good DB design for my project
In the comments you mention that a UserInput is either a Msg or an Action and not related to many actions or to many messages. The first model does not accurately describe this relationship.

You correctly identify that the problem is how to make Action and Msg "extend" UserInput. This is often called Supertype/Subtype pattern in database design.

I would make (UserInputID) as the PRIMARY KEY in both Action and Msg:

UserInput
  UserInputID   PK

Action
  UserInputID   PK, FK1
  TabID         FK2

Message
  UserInputID   PK, FK1
  GroupID       FK2


The rest of the tables would stay unchanged. This is the easiest thing to do, assuming that you have the freedom to define how the IDs are populated (for every new Action, a new UnserInput is inserted and the ID is used for the Action, too. Similarly for the Msg table.)
It still does not address all potential problems. A malicious or wrong update can have the database into some weird status, where a UserInput is both an Action and a Msg. 



An altered design can overcome the issue by adding a Type column and some constraints:

UserInput
  UserInputType  PK
  UserInputID    PK
  CHECK (UserInputType IN ('A', 'M'))

Action
  UserInputType  PK, FK1
  UserInputID    PK, FK1
  TabID          FK2
  CHECK (UserInputType = 'A')

Message
  UserInputType  PK, FK1
  UserInputID    PK, FK1
  GroupID:       FK2
  CHECK (UserInputType = 'M')

CriticalPoint
  UserInputType  PK, FK1
  UserInputID    PK, FK1