It could have been created long before anyone even thought about the possibility of IBar . I'm not going to go into the gory details of the aggregation hack that is supposed to solve this problem. Given the constraints of the flawed initial design, it is a truly ingenious hack. These are two completely different notions. You can't explain anything in OLE without talking about objects, sometimes called components.
Interfaces are important, but objects are even more important.
When they share the same underlying object. You can change the state of an object using one interface and then examine this state through another interface. All that the client sees are interfaces. The underlying object is like a ghost. But it's not a ghost, it is physically present in the address space of your program, either directly, or as a forwarding stub.