A dataset is a child filesystem of the parent pool, or parent dataset.
This may seem confusing at first. Let me explain.
Imagine that the pool were a whole hard drive. With most filesystems, you create a single, disk-sized partition, and then format the partition with the filesystem. But, sometimes you want to do different things where it would be useful to have multiple independent filesystems. Well, then you have to erase and redo your partition structure to fit more partitions, and thus more filesystems. Or, more hazardous, and more time consuming, use a tool to resize the filesystems, resize the partitions, and then create the new filesystems.
With datasets in ZFS, all these partitioning concerns are unnecessary. A dataset acts like another mounted partition with no locked-in size. The quantity of disk space it takes up is only as much space as you use in populating it, or children of it. You don't have to worry about resizing partitions or anything. ZFS transparently handles all that for you.
Additionally, each dataset can have its own special configuration by modifying different behavioral variables.
These are just a few of the behaviors that are controllable on the dataset level.
Back to ZFS