Wine is something that is mentioned a lot when people talk about Linux or Mac OSX compatibility but few people know very much about it or why you would use it.
Wine is a program that maps Windows API calls to Unix (POSIX) API calls on the fly. It is however definitely not an emulator, in fact the developer even made this apparent with the name as WINE is an acronym for Wine Is Not an Emulator.
Wine would be used if you wanted to get a program workin’ on Linux or Mac OS X that didn’t have a Linux or OSX version.
Wine shouldn’t be used if a program you want to use has a Linux or OSX version. This isn’t usually because it is slower than native versions however it will register to the developer as a Windows customer as opposed to a OSX customer or Linux customer. Also you are more likely to get bugs running the Windows version than your respective native version. The third reason you shouldn’t use the Windows version if there is a Linux or OS X version is some APIs are not supported and therefore will not work on Linux / OS X and will cause a crash / error.
Some people like Wine as it allows you to run programs that aren’t developed for your specific operating system. For example it gives Linux users the chance to run Adobe Photoshop and allows OS X to run Putty.
Some people dislike Wine as it allows developers to create a ‘lazy’ port of a game or program to Linux or Mac OS X. This could be a problem as WINE can’t port every API call from Windows and therefore will not have full compatibility with every program feature.