This is a followup to another question I asked abou creating your own hooks.
In the answer and comments, two functions were mentioned
module_invoke_all(...)
drupal_alter(...)
The function module_invoke_all
appears to be used to invoke a hook for any module that implements it.
The function drupal_alter
appears to invoke a hook for any module that implements it and passes around a persistant data structure between all the hook functions.
Digging through the code, I also found
module_invoke(...)
which appears to let you invoke a specific hook in a specific module.
So, my question is really two questions. First, is my understanding of the above items correct. Second, are there any other core Drupal functions that can be used to invoke hooks implemented in a module?
My end goal is a better understanding of how the pieces of Drupal's architecture come together to form Drupal, the application, as most people use it. I'm starting with trying to understand the module system in isolation. Any corrections to glaring misconceptions are appreciated