If you are in the unfortunate position of writing a visual studio extension, here are some of the blog posts that helped me. Without them, I would have been truly stuck.
DiveDeeper's blog » LVN! Sidebar #1 - Automatically loading packages - How to make your extension load on startup instead of when a user accesses a menu that you've stuck a command on (required if you need to show/hide menu items dynamically)
Visual Studio Extensions Forum - How to add parsing errors to ErrorList window? - It took a while to realise that to add errors to the error list, you needed an error list provider with a link to a registered and running service (where as the task list just requires a function call).
Using EnableVSIPLogging to identify menus and commands with VS 2005 + SP1 - A lot of difficulty comes from having an XML file specify where your menu items should go and that it uses constants that don't seem to be defined anywhere in order to add menu's to places. This registry hack makes visual studio show you the guid that relates to particular context menus in order to help you write the XML file and get your new menu item to appear in the correct place.
Many thanks to Adrian Conlin for the awesome icon.