WordPress provides the web developer the ability to hook into both the WordPress install and plugins in order to change functionality or output of the website. Action hooks and filter hooks can be used either in the functions.php file of the theme or in a custom coded plugin for that very purpose.
The benefit to using hooks is that the WordPress or plugin authors are aware that these hooks are going to be used by the WordPress community and so will minimize code changes in future releases of their plugins or installs so that the hook functionality of existing WordPress sites is not compromized.
Utilizing hooks in combination with the overriding of theme templates with a child theme gives the WordPress developer great flexibility in accommodating the wishes of his or her client. However, it is my experience that the developer should not get too aggressive with hooking into existing functionality, particularly if it involves two or more plugins as the level of complexity increases dramatically as well as the possibility of the site breaking in future releases.
All professional plugin developers publish an online a summary of the hooks of their plugin application with an explanation of their use. WordPress also publishes online a summary of its own hooks that are particularly useful if the developer wants to hook into an action hook at a particular place in WordPress’ loading.
The difference between action hooks and filter hooks is quite simple. With an action hook, one may trigger a particular piece of custom code at one point in time. With a filter hook, one may add, remove or edit a string or array that is intended for output. Of course, to manipulate these hooks requires a fairly good knowledge of object oriented PHP, the language of wordpress and the programming language that runs most of the world’s web servers.