iMovie workflow for creating different versions or snapshots?
TL;DR


Use separate iMovie Libraries for each video project.
Duplicate projects for each version.




This is the current workflow I've come up with:


Very importantly, create a separate iMovie Library for each of your video projects (not to be confused with a Project in iMovie). This will make versioning and backup much easier. By default, iMovie has you saving everything in one giant Library, making it both hard to find what you need, but also hard to backup or share a specific project. 
Create a new Project, and call it master. This will be the only Project you ever edit directly and will always represent the latest changes.
Start editing your Project. Once you get into a state where you want to "save" it as a version, go to Projects, and duplicate master. Rename it to v0.1 and optionally add a description. E.g. v0.1 - initial transitions done, still missing credits.
Continue working on master and creating more versions as you go along. E.g. v0.2 - before making large scale changes to the contrast of all the clips.
Once you're at a point where you want to share your video (e.g. via uploading to YouTube), create a major version number (E.g. v1.0). This will make it really easy to come back to the "YouTube" edit of your video, for example.
If you continue making changes, continue using the same versioning scheme to make v1.1 - Credits fixed, for example.


By duplicating Projects within the same Library, you save a ton of disk space since each project copy is lightweight and doesn't copy over all the video files.