They all use the same service, snapshots under the hood, but are triggered at different times.
Blob versioning is triggered on a specific blob when it is edited, so you can retain a version history for individual blobs
Snapshots are manually triggered snapshots of specific blobs, containers or accounts
Soft Delete is the retention of a snapshot when an item is deleted.
To be honest, you listed the reasons for these services in your questions, so I'm not sure what other information you are looking for?