Snapshots builds one on top the other, saving only differences from the previous step. So, deleting a snapshot in the middle of a tree branch won't probably free disk space because modifications have to be merged to the next level to achive consistency. I suppose the only way to free up disk space is delete an entire branch of snapshots. Example:
Hello
-HelloW
--HelloWo
---HelloWor
----HelloWorl
-----HelloWorld
--HelloWW
---HelloWWW
----(you are here)
Deleting ---HelloWor snapshot won't free up space because differences has to be merged to the next level of the branch ----HelloWorl. To free up space you'll need to delete the whole branch starting from --HelloWo to -----HelloWorld