Thanks to Microsoft providing APIs, but not providing any utility-level 
  support (such as Unix's 'ln' command,) few people today are aware of the fact 
  that Windows provides file system level support for both POSIX compliant hard 
  links for files as well as Microsoft's own form of symbolic 
  links through shell links and (on NTFS 5 or higher,) junction points 
  for directories. Instead, they've offered to hype their own shortcuts (which 
  are nothing more than a generic, meaningless .lnk file,) to the end user. 
What is a symbolic link?
  "A symbolic link is an entry in a Unix (or Unix-like) filesystem that allows 
  a directory entry to refer to another directory entry." - wikipedia.org
Shell Links
Sounds like a shortcut, right? In essence, they're quite similar 
  in function - however Windows' shell links provide this functionality, as well 
  as a lot more. Both allow you to access a folder (say C:\this\is\a\really\long\and\annoying\directory\) 
  in a more useful way (such as a direct link to \directory\ on your 
  C:\ drive. However, if you use explorer with the folder pane open, we quickly 
  run into a rather larger limitation of shortcuts. In the screenshot I've created 
  both a shell link ([muzik]) and a shortcut to a folder on my d:\ drive.

The first result should be obvious quite quickly. Explorer 
  does not show shortcuts to directories in the folder pane! The shell 
  link however, shows up beautifully. Also shown is the properties for the 
  shell link. Windows realizes it's a folder but it also realizes that 
  it's a linked folder.
  Shell links do have one significant drawback however. Console windows. 
  If you were to open up cmd.exe (or command.com for you out-of-date users,) and 
  switch to a linked directory, you might notice something surprising:

That's right. The link is actually created through the rather 
  tricky usage of an empty directory and a special kind of .lnk file!  An interesting side effect 
  of this, is that if you rename the linked directory, the shell link simply disappears 
  from it's location. If I were to rename D:\music to D:\foo - the [muzik] link 
  on my desktop in the above picture would simply vanish.
Junction Points
Junction points - a feature of NTFS on Windows 2000 and higher, 
  are a bit more featured, and also, a bit more dangerous to use. Used correctly 
  though, they're also a wonderful feature. The WinbolicLink help file says it 
  far better than I ever could, so I will simply use their explanation of a junction:
"Junctions, for all intents and purposes, are invisible 
  to Windows. Virtually all programs, including Windows Explorer, will interpret 
  the linked folder as though it were the target folder. This makes Junctions 
  dangerous because deleting the link in a non-junction-aware program such as 
  Explorer will cause a recursive delete, deleting the contents of the target 
  folder as well as the link."
Yes. If you delete a link to a junctioned folder, even in explorer, 
  you will most likely wind up deleting the actual folder itself. Junctions do 
  have their uses though - the most evident is when running low on disk space. 
  What do you do if you're running low in disk space on your primary drive, but 
  you have a second drive with plenty of available space? Using junctions, /without 
  uninstalling/ programs, you can actually move, say, programs in your C:\program 
  files\ folder over onto your D:\ drive.
Through a junction point, you could move, for example, C:\program 
  files\stardock\ to D:\programs\stardock\ and then create a junction 
  pointing d:\programs\stardock\ back to c:\program files\stardock\. 
  Even though those program files now physically reside on your D:\ drive, to 
  Windows, and all programs, they are still viewed as residing in the original 
  directory. 
Junctions are also implemented on a kernel level - offering 
  up theortecial performance increases versus a shell link (though, I've never 
  noticed any degredation with a regular link, which is what I use.)
Winbolic Link 
  is a wonderful, and free, package for creating and maintaining shell links and 
  junctions with windows.
Hard Links
A hard link is essentially the same thing, only with files. 
  In essence, it's having more than one directory entry pointing to the same file. 
  So, if you have c:\foo.txt and d:\bar.txt - you can edit, change, etc. either 
  file - and the changes show up immediately in the other. Very similar to a file 
  shortcut, but on a system level. 
A big advantage over a shortcut however, is that you can rename, 
  move, or do whatever you wish to a hard linked file (either the link, or the 
  original,) and they will always point to the same data. And as a hard link is 
  just another directory entry, you can even delete the original file 
  - and the hard link will still contain the data.
To delete a hard linked file, you have to delete all references 
  (original & links,) to the file.
A good example of uses for hardlinks would be for a developer 
  who has 10+ copies of the /exact/ same files for different projects sitting 
  in 10 different spots on his harddrive, all using up space. As the files are 
  identical, she could just keep one copy of the file on her drive, and hard link 
  it to all of the other directories she needs.
(Yes, not as much to say about hard links - they simply aren't 
  nearly as useful for my needs and usage.  They're still handy, however.)
 They're still handy, however.)
A good package for hard links exists as well: Hard 
  Link Magic - they can also be created from the console with the fsutil command 
  - but it's a cumbersome beast.
EDIT: For some reason, my images aren't showing up 
  correctly (at least on my end.) by default. Firebird (and possibly mozilla,) 
  users can right click on them and choose "View Image" - and they display 
  fine, even when you 'back' to the article. IE users... from my quick testing, 
  you're out of luck.