In this answer I will attempt to outline what the different types of links in directory management are as well as why they are useful as well as when they could be used. When trying to achieve a certain organization on your file volumes, knowing the various different types as well as creating them is valuable knowledge.
For information on how a certain link can be made, refer to grawity's answer.
What is a link?
A link is a relationship between two entities; in the context of directory management, a link can be seen as a relationship between the following two entities:
This table keeps track of the files and folders that reside in a specific folder.
A directory table is a special type of file that represents a directory (also known as a folder). Each file or directory stored within it is represented by a 32-byte entry in the table. Each entry records the name, extension, attributes (archive, directory, hidden, read-only, system and volume), the date and time of last modification, the address of the first cluster of the file/directory's data and finally the size of the file/directory.
More specifically, the first cluster of the file or directory.
A cluster is the smallest logical amount of disk space that can be allocated to hold a file.
The special thing about this relationship is that it allows one to have only one data cluster but many links to that data cluster, this allows us to show data as being present in multiple locations. However, there are multiple ways to do this and each method of doing so has its own effects.
To see where this roots from, lets go back to the past...
What is a shell link and why is in not always sufficient?
Although it might not sound familiar, we all know this one! File shortcuts are undoubtedly the most frequently used way of linking files. These were found in some of the early versions of Windows 9x and have been there for a long while.
These allow you to quickly create a shortcut to any file or folder, they are more specifically made to store extra information along just the link like for example the working directory the file is executed in, the arguments to provide to the program as well as options like whether to maximize the program.
The downside to this approach of linking is exactly that, the extra information requires this type of link to have a data cluster on its own to contain that file. The problem then is not necessarily that it takes disk space, but its rather that it the link is indirectly accessed as the Data Cluster first has to be requested before we get to the actual link. If the path referred to in the actual link is gone the shell link will still exist.
If you were to operate on the file being referred to, you would actually first have to figure out in which directory the file is. You can't simply open the link in an editor as you would then be editing the
.lnk file rather than the file being linked to. This locks out a lot of possible use cases for shell links.
How does a junction point link try to solve these problems?
A NTFS junction point allows one to create a symbolic link to a directory on the local drives, in such a way that it behaves just like a normal directory. So, you have one directory of files stored on your disk but can access it from multiple locations.
When removing the junction point, the original directory remains. When removing the original directory, the junction point remains. It is very costly to enumerate the disk to check for junction points that have to be deleted. This is a downside as a result of its implementation.
The NTFS junction point is implemented using NTFS reparse points, which are NTFS file system objects introduced with Windows 2000.
An NTFS reparse point is a type of NTFS file system object. Reparse points provide a way to extend the NTFS filesystem by adding extra information to the directory entry, so a file system filter can interpret how the operating system will treat the data. This allows the creation of junction points, NTFS symbolic links and volume mount points, and is a key feature to Windows 2000's Hierarchical Storage System.
That's right, the invention of the reparse point allows us to do more sophisticated ways of linking.
The NTFS junction point is a soft link, which means that it just links to the name of the file. This means that whenever the link is deleted the original data stays intact; but, whenever the original data is deleted the original data will be gone.
Can I also soft link files? Are there symbolic links?
Yes, when Windows Vista came around they decided to extend the functionality of the NTFS file system object(s) by providing the NTFS symbolic link, which is a soft link that acts in the same way as the NTFS junction point. But can be applied to file and directories.
They again share the same deletion behavior, in some use cases this can be a pain for files as you don't want to have an useless copy of a file hanging around. This is why also the notion of hard links have been implemented.
What is a hard link and how does it behave as opposed to soft links?
Hard links are not NTFS file system objects, but they are instead a link to a file (in detail, they refer to the MFT entry as that stores extra information about the actual file). The MFT entry has a field that remembers the amounts of time a file is being hard linked to. The data will still be accessible as long as at least one link that points to it still exists.
So, the data does no longer depend on a single MFT entry to exist. As long as there is a hard link around, the data will survive. This prevents accidental deleting for cases where one does not want to remember where the original file was.
You could for example make a folder with "movies I still have to watch" as well as a folder "movies that I take on vacation" as well as a folder "favorite movies". Movies that are none of these will be properly deleted while movies that are any of these will continue to exist even when you have watched a movie.
What is a volume mount point link for?
Some IT or business people might dislike having to remember or type the different drive letters their system has. What does
M: really mean anyway? Was it Music? Movies? Models? Maps?
Microsoft has done efforts over the year to try to migrate users away from the
work in drive C: to
work in your user folder. I could undoubtedly say that the users with UAC and permission problems are those that do not follow these guidelines, but doesn't that make them wonder:
Why should you even be viewing anything but your personal files on a daily basis?
Volume mount points are the professional IT way of not being limited by drive letters as well as having a directory structure that makes sense for them, but...
My files are in different places, can I use links to get them together?
In Windows 7, Libraries where introduced exactly for this purpose. Done with music files that are located in this folder, and that folder and that folder. From a lower level of view, a library can be viewed as multiple links. They are again implemented as a file system object that can contain multiple references. It is in essence a one-to-many relationship...
My brain explodes... Can you summarize when to use them?
Shortcut links: Use them when you need quick access to an executable or website, a file that you launch very often or when you need to specify parameters to an application and a batch file is an overkill. Don't use it when you intend to manipulate the file through its shortcut.
Junction points: Use them when you want a directory to be elsewhere, this allows you to move directories to faster or slower drives without losing the ability to access the original path. Another use is when you want access to a directory through another path. These can't be used to link to a share.
Soft links: Use them where a shortcut link does not suffice, it is often used when you do intend to manipulate the file through its shortcut. Or when you want the file to be on a faster or slower drive without losing the ability to access the original path.
Hard links: Use them when you only want a file to be gone when all hard links to it are removed. This can't be used for folders.
Volume mount points: Use them when you run out of drive letters, or when you find it more feasible to access a volume through a path rather than through a drive letter.
Libraries: Use them when you have the same type of file at many different locations and you need them to be together, this supports removable drives so makes it handy to get the folders on your removable drives show up between those on your computer when you insert it. You can click on the individual folders from the folder tree under the library in the tree view, which facilitates moving files between both.