The design of the Client COM Libraries requires the passing of a COM object to another COM object. For this to work the relevant COM objects need to be created in the same apartment. For example, in ECI, to make a link method call on the Connect COM object a Flow, Buffer and UOW object need to be passed. These must all be created in the same apartment in order to function properly.
Again with EPI it is important to ensure that the Terminal Session and Map COM Objects are created in the same apartment. The Terminal is responsible for creating the Screen object and it will create it in the same apartment as itself. This Screen object is then responsible for creating field objects and also creates them in the same apartment as itself. The programmer has control of the apartment where COM objects are created.
In most cases in Visual Basic you do not need to worry about apartments as you will be creating single threaded applications.