Such code is said to have thread affinity. Finally, some people will tell you that threads improve performance, but this is incorrect. Multithreading will only do this on a multi-processor machine, where various threads are able to run on different processors. On a single processor machine multithreading will use more resources and could decrease performance because the switching between threads in a process takes time. Multithreading improves availability, not performance.
Threads can join an apartment to access the objects in that apartment.
All access between apartments must be through marshalled interface pointers. An apartment is an execution context for COM objects. As the names suggest, an STA can only have one thread, whereas an MTA can have one or more threads. The first STA that is created in a process is called the main STA and is used for objects that wish to be treated as if there is only one thread in the process. EXE servers create their own apartments and register class factories in those apartments - typically objects run in the same apartment as their class factory.