a) you are developing for a wide range of clients, with a wide range of quirks and oddities, some clients support CSS, some strip out stylesheets,
b) email clients to be most concerned about: outlook 2007, outlook 2010, outlook 2013 (these three clients use the Word rendering engine to render HTML and have a number of quite nasty bugs/quirks)
b) HTML table layout - forget almost everything you have learnt about using complex CSS layouts, tables are the best bet as they rely least on complex (unsupported in most email clients) CSS
c) inline styles - only a few email clients properly support external or embedded CSS style sheets, some will just ignore stylesheets, a few will actively remove stylesheets
e) animation - the only way you can get animation into HTML emails currently is to use animated GIF images
f) background images - not fully supported across all clients, best bet is to use a background image and allow for a solid background colour to act as a fallback
g) media queries - it is possible to build responsive html emails using media queries, but they will not work across all email clients, you will have to use hacks for some clients
h) find a good email testing service/tool - litmus.com is quite good for both HTML email and proper web pages, although I have had a few cases where the test results in litmus.com did not reflect the final send results in outlook 2007/2010/2013.
i) any images used in the email will need to be hosted on a web server somewhere as they will not be attached to the email - the HTML needs to reference the image through an absolute URL, for example: 'htttp://www.randomhosting.com/email/promo01/images/header.jpg'
I'd have a look at http://kb.mailchimp.com/article/how-to-code-html-emails/ and make thorough use of google to find more information.