Commands, tools and extensions can work with different applications, ArcMap, ArcCatalog, Engine etc. You get to choose which one on creation or make it generic across applications, I think you got that part. For just In Time extensions, the "on create" doesn't happen when ArcMap starts up, only when it is needed. This makes ArcMap start up faster but you have to be mindful of when your extension gets initialized. The second option is what application (so ArcMap) and configurable. Configurable extensions get placed in the ArcMap/tools/extension menu and you can turn it on and off like other ESRI extensions like Spatial analyst. Blank extension don't have that option and are assumed always on. So for configurable extension, IExtensionConfig gets implemented and stubbed out. That is where the code that happens when you turn the extension on and off is. IPersistVariant is needed to save data with the extension.
BaseToolbar has very few options, basically just the applications it is registered with, Same for basecommand except there are more types of commands based on the types of application they are supposed to interact with.
Regardless of which type you choose, you can changed it in the com registration functions but choosing the right one makes all that stuff happen.
So... Step 1 is identify the type or types of applications you need to do. Making a command to work in ArcMap and Engine and Globe is all well and good but extra care needs to be taken to interact only with interfaces common to all of them. If you don't need to, don't do it.
As far as using JIT extensions, unless performance is a major consideration or if you extension takes a really long time to start (maybe retrieving data from a database or network) and it is not used often, I say don't bother. Generally if you build your own extension, its' because the users want to use it all the time, so the performance hit to start the extension will happen anyway, differing it won't gain much. For ESRI extensions it made a lot of sense because users weren't always using 3D analyst, for example, every session. Also if start-up times are a big deal, you might want to put some time metrics in to figure out if the JIT really makes a difference.