"Garbage collection" refers to software rather than drives. When a program no longer has use for variable space (usually strings or arrays) then that storage space becomes "garbage". Garbage collection refers to releasing that space to the memory manager for reuse. The user cannot do anything about garbage collection. The app developer has to do that, and the OS developer can provide tools to make it easier.
"Trim" is a function used to help SSDs remain efficient. If you delete a file, the OS usually only wipes the filesystem directory entry and updates the bitmap to show those blocks are free space. The OS doesn't usually write zeroes to the blocks that the file used to occupy, because this would take time; the computer would act slower.
However, the SSD is independent of any particular OS or filesystem. It doesn't know how to read directory entries or volume bitmaps. It keeps its' own map of blocks that have been written to, but internal SSD blocks are big. Say, 32 MB big. These are the smallest "zones" that an SSD can erase. Unlike a hard drive, an SSD cannot erase standard 512-byte blocks at will. Only relatively huge blocks.
When it comes time to modify contents in an internal block, the SSD must do a dance. All unchanged data has to be copied to a standby block, along with the modified data. The old block is then erased and becomes a standby block. All of this takes time. If the SSD is running low on standby blocks (overprovisioning), it can take a lot of time for the SSD to consolidate used space into fewer blocks.
Trim works by letting the OS notify the SSD that a particular space is actually free. Although data has been written to that space in the past, it should now be disregarded. When the SSD has to manage it's internal blocks, that space need not be copied.
If the OS and SSD both support Trim, then it works automatically. Whenever a filesystem block is freed up, Trim passes the info to the SSD. The SSD uses the info to act more efficiently, which the user sees as the SSD running faster.
As to your last question about Trim, the user could turn it off. But who would want to. A utility could be used to read an existing filesystem, then send Trim notices for every free block in the file system. This would be useful if the SSD had previously been used with an OS that didn't support Trim. Such OSes are in the past today, so such a utility wouldn't do anything.