The main use I have for this is virtual servers being able to use an LVM volume but not occupying all of the space. It saves time in deploying machines and copying them so you are only copying the space they are using (eg. 5GB / 60GB vs the full 60GB). There are some disadvantages which is mainly the fact that thin pools by their nature allow you to "overallocate" disk space which is that you could use more space than is available on the disk itself and corrupt your data.
So in my opinion it is best to avoid thin pools EXCEPT if you have a testing environment you need to get up quickly or if you REALLY know what you are doing (eg. you are sure the disk space won't be overallocated or you have some other safeguards).
How To Create An LVM Thin Pool
-L = the size of the pool
--thinpool = specifies we are creating a thin pool
vmthinpool = the name of our thinpool
vms = the name of the vg / volume group we are creating it on.
lvcreate -L 500GB --thinpool vmthinpool vms
Using default stripesize 64.00 KiB.
Logical volume "vmthinpool" created.
lvm, dynamically, allocated, virtual, servers, volume, occupying, saves, deploying, copying, eg, gb, vs, disadvantages, mainly, pools, quot, overallocate, disk, corrupt, overallocated, safeguards, thinpool, specifies, creating, vmthinpool, vms, vg, lvcreate, default, stripesize, kib,