Whenever this subject comes up, there's always a lot of misinformation spread. You'll always hear: just drag to trash, or rarely use uninstaller, AppZapper etc.
All wrong.
Dragging to trash is a joke. Works, but for the minority of cases. If you do that, in most cases you'll leave behind a lot of files in libraries, which contrary to what you'll hear, can give you serious, serious problems.
AppZapper and other such apps do not work 100% - I know, because I used most of them. Actually you are better off using Spotlight to search for all the nasty trash scattered across libraries. Yet, this is not foolproof, because you are searching by app name - and that is not always the only name those files hide under. Often, they are under the name of the developer or software company. So, Spotlight (or the uninstalling apps like AppZapper) is searching for the name of the app, missing the files under different names.
There are many apps which you simply cannot move to trash without having horrific problems. I once spent several hours hunting down files in the app 1Passwrd which I simply dragged to trash - the result was that I couldn't launch any browser without my keychain freaking out and asking for a bunch of passwords for every single page - nightmare. This is true for many apps which hook deeply into the system - you must not drag them to trash to uninstall. Fortunately, most come with uninstallers. Unfortunately not all do, and worse sometimes even uninstallers that come with some apps also don't uninstall all the files (leaving behind for example Receipts for packages etc.).
What kind of problems can you face if you don't get rid of all the junk files left behind by dragging to trash? Well, for one, should you wish to re-install some of these apps, or install a new version, it won't work because an old pref file is screwing up your install. You must hunt down and eliminate it.
Also, there really are many places that these files can reside - in your user library there are many, many categories where these files can be, such as preferences, contextual menus, caches, input managers and the list goes on and on and on. But wait, that's not all! Often an app will install itself for all users, in which case you have to go to your root library and go through all those categories, often under multiple names and obscure references.
It's a nightmare. Fact is, app uninstallation is broken in OS X. Here's how it ought to be done: any time an app is installed, a record is created of every single installed file location for that app and keeps track of all files created from the app. Then, there should be a global OS X app uninstaller which removes every single file and compares the list to the record. It then presents you with the list - if you click "remove", all are gone. Simple. But not in Tiger. Maybe in Lion or the Maine Coon. Cause right now, it's broken as a pig. Now watch all the fanbois come rushing to defend the broken system ("but I drag to trash and I never have any problems ever, blah, blah, blah"), but they won't be able to dispute the accuracy of my statements factually: the files that can be left behind, the kinds of problems that can be created and how stupid it is and how simple the solution is.