They enable the extraction and reuse of stateful logic across multiple components without using hoc or render-props.
They also allow handling the functional component's state without converting them into class components (hence the name, we hook into React features).
The state, references etc. don't live in the functional-components, the components just hook to them on each render.