Why sometimes I hear about users running BTRFS or ZFS insides VMs and then allocating that storage to other VMs. Is this normal ?
No, that is not normal nor sensible unless you are building high availability clustering within those VMs. But you would not likely use BtrFS or ZFS for this, but more typically a clustered file system like GFS2. More or less, anytime you hear of someone using ZFS it's for something incredibly stupid. ZFS is amazing and I've been working with it for twelve years, but the recent belief that it is magic is just another example of SMB IT people hearing a word and deciding that since they don't understand it, it must be magic.
There are good times to do what you describe here, it's called a VSA approach. Vendors like @StarWind_Software and @HPEStorageGuy do this, but they don't do it with ZFS, they have custom software that handles HA clustering, that they do it in a VM is just a limitation of their access to the underlying hypervisor. VMware used to do this, but has VSAN now. Starwind only does this on non-Hyper-V platforms, on Hyper-V they skip the VM and run right on the hypervisor itself.
Building your own HA Storage VMs on top of your hypervisor is certainly possible, but is most definitely an "expert level" process. And what is available to build for yourself is quite limited. For all intents and purposes, doing this in this manner will only be done with either Starwind or HPE VSA products, this is exactly what they are built for and they both do it very well.
Just a tiny remark: depending on how VM does actual storage virtualization it can be either slow (doing data wires over vSwitch and using TCP) or extremely fast (PCI pass through or SR-IOV network and storage adapters inside a VM and using VM's vCPU(s) in polling mode), so it's not always beneficial to have in-kernel implementation of something.