The documentation for all available hooks is scattered a bit by topic in the documentation.
The basic lifecycle (install, start, stop) and relation hooks are documented under charms. Relation hooks are defined for every relation a charm defines in its metadata.
https://juju.ubuntu.com/docs/charm.html#hooks
Beyond those there are two other hooks of interest, the 'upgrade-charm' hook, which is called when a service's charm is upgraded for each of its service units.
https://juju.ubuntu.com/docs/charm-upgrades.html#charm-upgrade-support
The other is the 'config-changed' hook, called when a charm which defines a service configuration schema has its configuration changed, since services can be deployed with configuration data, the config-changed hook is also invoked upon the initial deploy of a unit prior to starting it.
https://juju.ubuntu.com/docs/drafts/service-config.html#creating-charms
all hooks are optional.