Unallocated refers to blocks that havenât been assigned to a block group. Extents are a range of blocks. And block groups are a range of extents.
On Btrfs block groups have profiles: single, dup, raid1, raid10 and so on.
And there are two kinds of block groups: data and metadata. (There is also the system block group which is primarily the chunk b-tree but in practice it treated as metadata.)
Free should be the total unused blocks in all types of block groups, plus the unused blocks that havenât been assigned to any block group.
Free tells you how much available space you have for data.
Allocated is more of a btrfs internal statistic. It is worth keeping an eye on though. If your volume becomes fully allocated, you can get in a situation where you have plenty of free space but you canât write data because the fs canât provision any new metadata blocks.