Most OS X applications use a "package" design to let users easily install an application. Application packages are essentially folders that contain all necessary files for the application to run; however, they appear as single files to the user. The advantage to this is that a packaged application can simply be "drag-installed" - the installation process merely involves dragging the application package to your Applications folder.
Uninstallation, therefore, is essentially the same process in reverse - drag the application package to the Trash, and empty it. Since packages are self-contained, all the files related to the application are removed.
Furthermore, because of this self-contained design, you can run multiple versions of an application side-by-side without conflicts - each version will run off of the files in its respective package. This is great, for example, if you work with one version of an application, but need to confirm that documents you create with it will work correctly with another version. With packages, you can jump back and forth between both.
The package design is not perfect, however. For instance, many applications create "preference" files after being initially run, which store your settings for that application. When you drag-uninstall an application, these preference files are left behind since they are not stored within the package, but rather in your ~/Library/Preferences or /Library/Preferences folders. Generally, this is harmless, but corrupt preference files can cause problems; if so, this means that uninstalling and reinstalling the application will not help. Instead, if you need to do a "fresh" install, you will need to figure out which preference files belong to the application and delete those manually. Then, when reinstalling, a new set of preference files will be created.
Some applications are not distributed as packages, but rather come with installers. Generally, installers are necessary if files need to be placed in a certain location for the application to function correctly. Apple provides a standard installer/uninstaller for developers to use with their applications; the installation process generally involves reading a license agreement and selecting which drive to install the application onto. There is also a button to toggle between an "easy" (automatic) install, and a custom install for more advanced options. A downfall to this approach is that while it is recommended that developers provide an uninstaller, it is not required. If a developer does not provide an uninstaller for their application, then you will unfortunately need to figure out which files belong to that application, and remove them manually.