One of the major differences in how applications are handled between Windows and OS X are how the system presents them to you in the user interface. With Windows, each program will generally load in a single window that contains the program's menus and other details, and then be managed in that window. If you open the program again then often the system will launch a second instance of this program that runs along side the first, so each can be quit and managed independently.
On the other hand, in OS X applications are not isolated to a similar window, and instead are treated largely as single-instance programs so only one will launch at a time. Therefore if you open TextEdit, then by opening the program file in the Finder again, you will simply be switched to the running TextEdit instance, instead of opening another one along side it.
While this is how Apple designed OS X to behave, it is actually an appended feature to the Unix-like underpinnings of the OS, where the system supports launching multiple instances of background services and other tasks via the command line. Therefore, if you would like to open a second or third instance of a specific program, you'll need to do so via the Terminal command line using the following:
open -n -a "APPLICATION NAME"
This command tells the system to open a new instance (the "-n" flag) of an application (the "-a" flag) that is the given name in quotes.
Using this feature departs from the default handling of programs in OS X, but it may be useful in several instances, such as if you are using known buggy software that you need to keep running for one purpose but wish to quickly test in a new situation -- if the test setup crashes, then the other should still be running. Additionally, you can try to load one instance of programs to access the default library but launch another to simultaneously load and manage a secondary library.
There may be other reasons to do this as well, but do keep in mind that it's not recommended to bypass the default handling of programs in OS X regularly, as it can result in several problems. For one, since Apple's paradigm has been to run only one instance, it has built a number of services into OS X that depend on there being only one instance of a program. At the very basics, each instance will access the same preferences file, so if you make a settings change in one program and close it, then depending on how that program manages the preferences, if you close the second instance you may simply overwrite the preference changes.
Beyond preferences handling, for programs like Mail that use central databases and data stores, you may run into problems if both instances try to act on the same messages or other database resources at the same time. In these cases, rules and routines in one could conflict with those in the other and result in odd handling of your data.
Finally, in OS X Lion and Mountain Lion, Apple has implemented autosave and resume features that are intended for use with one instance of a program. If you have numerous windows open in a program and quit that program without saving, then the system will automatically save the documents and their window positions before quitting, and then restore them when you next launch the program. However, if you have two instances of the program open, then the last one quit will be saved, so you may lose any window positions and unsaved documents you have been working on.