Use the built-in functionality to move the location of system directories where possible. There's no need to overcomplicate things with junction points and symlinks if it can be done cleanly that way. Use the latter only where necessary, and note that it can be difficult with some particularly important directories as Windows may not allow you to move/delete/rename them. You could boot up a Linux Live CD and do it there, but you'll need to consider if the benefits outweigh the required effort.
As for junction points vs "real" symlinks: use the latter if possible, but note that they won't work on XP or older because the NTFS version doesn't support them. Junction points are dangerous because certain delete operations on the junction point can delete the target. Symlinks are also network-transparent, ie. you can symlink to a remote file or directory and it will act as a local filesystem entity (just slower and subject to pointing to an unavailable location).