Why do we need to enqueue styles on a hook, why not just enqueue them straight in like this?
wp_enqueue_style( $handle, $src);
the codex page gives an example of using a hook but doesn't explain why (or if) it's important.
There is code that needs to run, thing that need to be setup, before you enqueue. If you enqueue too early those prerequisites will not be filled and you will see ...
Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information.
... if you have debugging enabled.
The register/enqueue system is complex-- look at the files named
class.wp-dependencies.php. It does not just
echo content to the page header. The code tries to handle dependency loading and prevent the loading of the same file more than once. For that to work things have to be registered and enqueued at the right time in the load process, hence loading on hooks.
That is not to say that enqueueing a file immediately won't work. It might. It depends on where you try to enqueue. As per the message, you need to enqueue after
init. Even so, I believe that some things don't work if you enqueue after
wp_enqueue_scripts. For example, you can't get a file to load in the header if you try to enqueue it late in the page load. So be careful with it and just try to avoid hook-less enqueueing.