Thank you so much for all the responses. They are super helpful and I really appreciate your help!
In my specific case I will need the actual timeline frame range properties to drive other things in my code, including some custom properties. But also I would need the custom properties that might be changed to drive the frame range properties. So in a way I need a mechanisms to work both directions.
So as far as I understand I can only add update functions to custom properties and for the existing Blender properties I would need to explore the message bus.
The handler depsgraph_update_post kind of works as well, but I am worried about the overhead, because it would run every time some value is changed on any property, if I understand correctly.
The most trivial example of the functionality I am looking for is to print in the console “Hello World” every time frame range values are adjusted on the timeline editor.
Thanks again for your help!