"before incoming message" hooks are executed before the bot processes any incoming message. You can intercept a message and handle it before the bot's normal logic kicks in. This is useful if you want to stop further processing of the message after receiving the hook. For instance if you want to create a "/startover" command, you'd do it in a "before incoming message" hook so it'll stop processing through the normal logical flow of the bot and start from the beginning.
"After incoming message" hooks are executed after the bot processes a message. This hook would trigger other actions or flows before the incoming message is handled.
"Before outgoing message" hooks run before the bot sends a message to the user. Which can allow you to modify or log the outgoing message before sending.
You can add hooks on the left of the web UI under the Hooks section. Sounds like you'd probably want to use "before incoming message hooks" if you're trying to catch commands like 'i want to talk to a human' from anywhere in the flow.