They are really similar but there are some differences:
Specific to the object type. (label signal can’t be replaced by button signal). Describes how the object type behaves. E.g. it makes a button to behave like a button.
Propagated to ancestor type. That is a button calls the container signal first, which calls object signal first. It makes possible to inherit behavior of the ancestor types. Other example: the text area behaves like a page because it is derived from it (can be scrolled)
Not all signal has an event counterpart. E.g. LV_SIGNAL_GET_TYPE (to get the object’s and the ancestors’ type), LV_SIGNAL_CONTROL (to send controll characters such as LV_KEY_NEXT)
Used the user
Not specific to the object type. The same event function works for any object type. (Except if you add type specific code.) E.g. LV_EVENT_CLICKED can be used on buttons, labels, sliders etc.
Can be propagated to the parent.
Not all signal has an event counterpart. E.g. LV_EVENT_VALUE_CHANGED.