An ActiveX dll/exe uses GUIDs(along with others). Globaly Unique IDs. This is a 16 Byte number that is guaranteed to be unique. This number is a physical name.
classes, interfaces, methods, typelibraries, etc... all get a GUID.
When you complie an ActiveX dll/exe these may change depending on your compatibility settings. No compatibility changes all the GUIDs. Binary compatibility keeps the same GUIDs. Project Compatibility keeps some GUIDs.
If you compile a client that uses a dll. The client gets a copy of the GUIDs. It uses these to activate and call your components. If these numbers get changed because you recomplie the dll. Then the clients are "Broken". They can't call the dll anymore because the physical names are now different than what the client calls are asking for.
Hope this helps
That which does not kill us, only makes us stronger.