If you have a storage underneath that supports thin provisioning and zeroing of unused space (ZFS, Ceph, I think thin LVM) then it helps to pass through the discard/trim commands to the actual storage to reclaim unused space.
ssd emulation is needed for virtual ide drive, to have discard working on some guest.
if you use virtio or virtio-scsi, you don't need ssd emulation, just enable discard.
Discard is use to free space on your physical storage, you delete a file inside a guest vm for example. without discard, when you delete a file, the space is still used on the the physical storage, so you can't use it in another vm.
(if you don't care about thin provisioning, you don't need discard)