I've read lots about using only 80% of available space but I can't seem to find if the free space should be left when sizing the zvol or free space left in the file system.
Right, I read that. You mentioned the percentage at the top of the pool, I see only 29% utilization. Based on that it sounds like it doesn't matter where the free space is located (zvol, pool, filesystem) as long as it exists somewhere?
You can go far beyond 50% utilization on block storage, but the performance will tend to degrade into sucksville with time. Your best bet is to use around 10-25% space if you really want sustained high performance. At 50% the steady state performance is already pretty tragic. Feel free to search the forums for "steady state" and "jgreco" as I discuss this often.