It's hard to explain COM in a small book let a lone in a short post so the best thing I can do is say try it and see. Try creating 3 separate Dlls, one object in each with the wizard and see where the code is the same and where it's different and if you can combine them manually. Also the theory of COM is different from the implementation of COM objects within a framework like MFC or ATL. Framework implementation details like COM Maps can be very confusing if you don't already understand what they're trying to achieve.
Learning by fiddling has always been the best way to learn programming and not just because that's how I did it.
Nothing is exactly what it seems but everything with seems can be unpicked.
Yes, something like that. In fact, the expression ret == SQL_SUCCESS 'returns' a boolean (true if they are equals, false if they are different). The same with the || operator. Thus, the complete expression returns a boolean, which is stored in m_bIsConnected.