How do you know when to add your action to init or wp_head. In particular with regards to scripts and styles, but also any other action.
From Codex Action Reference:
initRuns after WordPress has finished loading but before any headers are sent. Useful for intercepting $_GET or $_POST triggers.
wp_headRuns when the template calls the wp_head function. This hook is generally placed near the top of a page template between <head> and </head>. This hook does not take any parameters.
wp_head runs when page is already being loaded, while
init runs before that.
Also don't forget that
init fires on admin pages as well and anything front-end related must be excluded from there with