Drupal Hooks allow your module(s) and theme(s) to interact with the Drupal system. There is essentially no requirement that X hooks must be enabled by default by any drupal module.
A module is a container for a unit of code in Drupal. In Drupal7 a module consists of at a minimum a folder and a module info file. This is the mechanism used by Drupal to say “here is my code for Drupal to run”. Some modules such as Migrate, LDAP, Organic Groups and Views contain submodules. These submodules are themselves simply directories with .info files and .module files which contain code for Drupal to execute.
If you’re going to interact with or update a Database for instance. You’ll likely want to implement:
- hook_schema to make Drupal fully aware of your database tables. A convenient way to get the schema for existing database tables is the Schema module.
- hook_update_n and use the Drupal Database API to add/remove and alter columns on your tables.
- hook_views_data to inform the Views module how your table should be queried and interacts with other entities in your Drupal installation.
While Drupal modules may seem complex. They offer a useful method of encapsulation for your custom code — they are simply as simple or complicated as you need to perform your business logic.