ZFS supports (and excels at) two necessary things for a good file system: copy on write snapshots and filesystem serialization. ZFS is designed to run one filesystem
per user, so ZFS is designed to scale crazy high with little management overhead. It also makes it easy for snapshots to equal isolated per-user or even per-appication backups.
You can do neat things like: create a base filesystem, create a snapshot of it (i.e. "freeze" the filesystem in time), send the snapshot to another system (or over the network for S3 storage, etc), continue modifying files, create another snapshot on top of your first one, now you can send/backup the new snapshot which is only a diff of the original snapshot.
Many other systems besides ZFS support snapshots/copy-on-write layers, but they are mostly hacks and your performance will drop considerably during the "snapshot existing" time. ZFS is different because the snapshot mechanism doesn't kill your performance (unlike the 18 layer Linux file system organization).
"Sending" a snapshot can either be directly over the network to another system to ingest the snapshot (enabling you to stream a new filesystem/snapshot into existence on a remote machine), or you can gzip the snapshot stream and send it off to backup storage.
You can layer your snapshot diffs as much as you like. As long as you have all the diffs back to the original file system, you can re-create any point-in-time snapshot layer from your backup archive.
Longer details with examples are all over, but a good overview point is: https://docs.oracle.com/cd/E18752_01/html/819-5461/gbchx.htm...
Also, it's basically the only sane way to run containers in production since all the copy-on-write and snapshot sending isn't an 8 layer deep hack cake. In Solaris, containers are aware of filesystems at the deepest levels and the networking is aware of containers too. All Linux-based container fads over the past 5 years still haven't caught up to Solaris+ZFS+Zones+Crossbow from 6 to 10 years ago.