1) Aggregate has a WAFL file system physically on the disks.
2) FlexVol has a WAFL file system virtually laid out inside the aggregate.
3) A LUN is created as a flat file within the FlexVol and presented to the host.
4) The host then writes a file system on top of that (NTFS, EXT, VMFS, etc.).
When you free up space on the host, that is done on layer 4, which is the host operating system. It won't reflect on the layers above it. You can enable SCSI_UNMAP, which is a SCSI feature where instead of just marking blocks free on the host OS, it actually sends disk zeroing commands to ONTAP, which then will punch holes in certain blocks of the LUN. Once that is done, then most of the space will be reclaimed.
Also, keep in mind LUNs and FlexVols can be thin or thick provisioned, so it may reserve all the space depending on how you configure it.