Windows has a WinSXS directory which stores old versions of some system files in case you want to roll back a service pack, or similar. (These are stored as hard links so many of the files there point to the same area of disk as your current system files).
It also has a Volume Snapshot Service which keeps snapshots of an older version of the entire NTFS volume. My understanding is that this is used by things like backup tools which want to see a momentary snapshot of the entire volume contents.
I can see that they're totally different things, and sort-of for different purposes, but it still seems like duplication. Can anyone explain why one or other of these features wouldn't suffice for all needs?
WinSxS is not a backup of old system files. It is a solution to the Dll Hell problem. It allows MS and third party developers to install multiple versions of the same dll without conflicting with already installed software, and even load different versions of a dll into the same binary at the same time, controlled by activation context mechanism. At a basic level you can think of it as a fine grained control of PATH variable. Installed assemblies are not backups, they are used at the same time, or side-by-side if you will.
On linux, if you were to release an out of repository app in binary form, you would use rpath for the similar effect. Although that is not as flexible (and less convoluted because of that).
Before WinSxS was introduced, the only other way was to use App Paths settings in registry on per-executable basis. Those are limited in usefulness and plagued by MAX_PATH issues (like so many things on Win32 still is).
Volume Snapshot is a backup, it allows you to restore the system to a previous state when something does go wrong. Snapshots are not meant to be accessible during normal operation. And deleting all snapshots to free up space is not supposed to brick your system. :)