As already mentioned, when using other libraries created for a specific platform, you may need to specify this platform. A good example is COM.
Let's say you have a 32-bit COM component (which is the most), and the client OS is 32 bits. If you compile for "AnyCPU", it will work fine, because it will be JIT for its own x86 code, since you are working on a 32-bit system.
Now let's say that you have the same COM component, and the client OS is 64 bits. On Windows, when a COM component is registered, it will be registered in the 32-bit part of the registry (WOW6432Node, I think). Therefore, if you have an application compiled for "AnyCPU", it will be a native 64-bit application and will not be able to call your COM component (as a result of which the class is not registered), since it will look in the 64-bit registry. You will get the same error if you compile for x64 (since after JIT you get the same native code.) But if you compile for x86, it will work fine.
source share