See this PDF by Luke Wroblewski (page 60) for some examples addressing your #1 and #2.
The form can have instructions that are either static (just text sitting there) automatic (highlighting active elements w/instructions as you go), or user-activated. Note that "hover" tooltips won't work on mobile devices, so putting either plain text or a tappable "?" disclosure might be preferable.
For #3, in order to make sure users see errors as they go, consider in-line validation and real-time error checking as fields are completed, instead of waiting for "submit." That way users don't have to scroll back & forth to figure out why the form didn't go through.
In addition to changing colors (green for valid or red for invalid), also consider changing contrast w/a border, changing the input field's BG color, or use bold text or a boxed label on the incorrect field. This is better for users who can't distinguish color, but still require the user to actually notice those cues.
Adding a separate Bootstrap-style validation "arrow-bubble" makes it even more clear which items need attention so the user doesn't have to hunt.
See the same Luke W. PDF (pg 106) for suggestions on inline feedback and good error messages.