This is how I heard the Windows side explained in layman's terms from programmers.
In Windows there are hooks in programs and the OS that EXE files make calls to that just won't be there in Linux. Because of the differences in both the environments. Initially Linux looks for permissions, and Windows looks for a linkable format first by examining the extension, looking at properties, and then looking inside the EXE file, etc.
There are applications like Netbackup that started out on Linux and have been modified to run in a Windows environment without using Wine. IMHO, frequently those are some of the most stable best behaving Windows applications.
When Windows applications become unruly usually it is because some of those hooks held by the application weren't completely released and Windows thinks they were (memory leaks). When Windows hands that unreleased memory space out to another application, it crashes and burns.