To answer your question: 1. You definitely can host a 2.0 in your process. Jeffrey Richter recommends using CorBindToRuntimeEx Function in the 2.0 edition of his CLR via C#. This got deprecated in the latest versions of the framework, hence the confusion. I would recommend going this way.
2. COM interop - to make it work properly you actually need to change your library, add some attributes, then register the resulting COM object, etc. I am pretty sure it adds references to some marshallers and other COM related stuff. I would definitely stay as far as possible from COM. The shortcomings of this technology was one of the reasons to come up with .Net in the first place. And even more so if you ship these dll's to anyone.