Considering how often functions.php is called, shouldn't all of its contents be hooked or filtered into core WP functions like init?
It can be used for much about anything that requires php...
You'd only use hooks if you don't want to execute the php logic immediately. This is usually the case, but not always.
Likewise, you'd typically use the WP API. But not always either...