VS Extensibility Architecture (Package API/ Visual Studio Library)

The "Package API" is the set of COM interfaces exposed in the Visual Studio SDK. These are the raw extensibility interfaces for the Visual Studio shell. Almost all the interfaces start with 'IVs' (for example IVsShell, IVsHierarchy, IVsSolution, etc...) If you have the Visual Studio 2010 SDK installed, take a look at the contents of %SDKInstall%\VisualStudioIntegration\Common\IDL for more detail.

You can think of VSL as an ATL-inspired framework for creating native Visual Studio packages. If you create a C++ Visual Studio Package from the included template, the output will be using VSL. The advantage of it is that it minimizes the amount of 'plumbing' code you need to write for a given feature (adding a new ToolWindow for example).

The Interop Assemblies are for .NET/COM interoperability. They provide the right method signatures and structure for managed (C#/VB/F#) code to call into the Package API.

The Visual Studio Extensibility center on MSDN is a good place to start for more links to documentation, blogs, articles, etc... that should help you along.