How to create a hook?
You don't actually create hooks. You use helper functions such as module_invoke_all(), module_invoke() or drupal_alter() to invoke all functions matching the expected name pattern. The invoked functions are usually found with  module_implements().

Even if it is not needed for the hooks to work, the best practice is to document them in MODULE.api.php by creating empty stubs hook_NAME functions with documentation comments.