When you create a VM, you create a virtual disk as well. This disk can be of fixed size or dynamically expanding. In the first case, the file will not grow, in the latter case, the file has a small size at startup and will grow as needed by the VM to the maximum size of the virtual disk. The dinamically expanding disk can be compacted using Lukas's answer steps.
When you take a snapshot, VBox create a new file in which all changes will be writed instead of the original virtual disk file. This new file will grow as needed to the maximum size of the virtual disk. If you take another snapshot at some point, this file will stop growing, VBox will create another file which will grow at its turn.
If you don't need snapshots, then you can delete them, the data will be commited in the original virtual disk file (or original snapshot file in case of consecutive snapshots.) Just stop the VM, select the snapshot you want to delete, use the button with the red cross in the snapshots tab. It can take a long time, depending of the amount of data in the snapshot.
The icon with the up arrow is to restore a snapshot (and forget all data changed since the shapshot date).