ummm… I must admit, if you flood your own thread and start answering questions yourself, I lose track of what the actual question ist…?
I would object to the phrase “Python can be triggered by…” as it doesn’t matter what language you write a call in (it used to be possible to employ COFFEE for that as well, and you can still use C++ to write plugins instead of Python). C4D provides hooks to call custom code in various ways, that is correct. If the main code passes such a hook, then the custom code is called. In case of a Python tag, effector, generator, or XPresso node (enumeration not necessarily complete), this call happens whenever the object tree is evaluated. Which again happens when a frame (or subframe!!) is drawn, something changes in the scene, something is rendered, etc. That is fairly often. In case of a Python script, it is triggered when you click “Execute” or use the keyboard shortcut - or if it is called by some other custom code you wrote. In case of a plugin, the plugin provides certain methods where each method stands for one hook to be called.
It is important to remember what you cannot do - some functionality must not be called from certain hooks, for example you cannot make changes to the scene while in a tag. Some functionality can only be called from the main thread. Some things are logically impossible, like calling a dialog from a tag. And some things cannot be done because C4D does not provide a proper API for it, like window control.
These are not limitations of Python as a language - Python can do anything, as it is a universal language, it is just limited through the APIs that a host application provides (in this case, C4D) to allow control of the host.
The central point when writing anything Python is: what do you want to do, and when/how often do you want it to be done? These questions lead to the proper hook/call/callback/plugin type to use. The actual code follows suit from the internal data structures (object tree etc.) that C4D provides in its APIs.
The next thing you will probably encounter is the fact that some concepts and ideas cannot be implemented by a single thing - you may need to write several plugins of different types, make them communicate to each other, and support them by command scripts. That’s where the fun starts