Sorry for the late reply, I'm busy on 6.2.0 so dont have much time. Heres answers to a few of the questions:
Mike
1. modules do not require seperate uninstall logic - when you uninstall an extension all the related parts are removed automatically [i.e. they're all part of the same package] - with the exception of "shared" assemblies (http://www.dotnetnuke.com/Resources/B...) i.e. if your module installs a component (such as someshareduserful.dll) that other modules use, this will only be deleted if it is no longer used by anything in the system.
2. as noted, extensions handle their own uninstallation and cleanup - however it is possible to create an extension and add a custom cleanup component which can do anything you want e.g. you could create a module that removed all extensions by your company when it was uninstalled see http://www.dotnetnuke.com/Resources/W...
Joe
Apologies for the confusing terminology - in dnn 5.0 we started to refer to extensions and had extension types (previously we had modules, skins, containers). This was partly as the module installer was overhauled to handle all extension types rather than just modules -this meant that as well as having one central place to add anything new, all extensions were stored in the system so automatically could support uninstalls/shared elements etc. In addition it meant an extension could contain multiple installable components e.g. an extension might contain a skin but also skinobjects, containers etc. This set of elements is the "package" - in most cases a package consists of a single extension (which is usually just a single module), but having this structure (and terminology) means that developers can create very versatible packages.
BTW I recommend the wiki manifest documentation , it's a mine of useful information - http://www.dotnetnuke.com/Resources/W... . I particularly recommend the blog links at the bottom of http://www.dotnetnuke.com/Resources/W... where Charles (the architect) explains some the new capabilities and the thinking behind them.