Shell Extensions Are Like File Extensions
When you right-click on a file it shows the verbs associated with the program, giving you the choice to print, edit, etc. It also shows you any Shell Extensions installed by your program. Funcionally, shell extensions behave similarly to file extensions but they have a special interface that programmers use to change what happens to explorer when you right-click. You must have seen that when you right-click on an exe file, the winzip menu has some extra items for self-extracting archives.
This article on codeproject.com explains it all rather well with an example dll to download.
The example there shows adding an extension to the txtfile progid so you see an extra menu item on txt files. There are no pictures of the registry so I thought I'd make some for you.
The shell extension keys are very similar to the file extension keys.
The file extension settings live in HKCR\ProgID\Shell and we add Verbs under there for the file associations.
The shell extension keys live in HKCR\ProgID\ShellEx
and look like this:
When packaging into MSI files, all those keys should live in the same component as the dll file.

