user24076: While using iMovie, I want to easily create snapshots of my project so that I can easily go back in time and grab things that I need.
For example, if I'm making large scale changes, and I accidentally messed up a clip or a nice transition, I want to be able to go back in time to grab the version of the clip before it was messed up.
In its default state, iMovie has you working on one single version of a project, and your only way to go back in time is by using the undo feature. However, this is not preserved between app launches, and probably has a limit.
I know I could copy an entire library, but that would take up a ton of disk space as all the videos would be copied too.

user24076: 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.

24076: <p>While using iMovie, I want to easily create snapshots of my project so that I can easily go back in time and grab things that I need.</p>

<p>For example, if I'm making large scale changes, and I accidentally messed up a clip or a nice transition, I want to be able to go back in time to grab the version of the clip before it was messed up.</p>

<p>In its default state, iMovie has you working on one single version of a project, and your only way to go back in time is by using the undo feature. However, this is not preserved between app launches, and probably has a limit.</p>

<p>I know I could copy an entire library, but that would take up a ton of disk space as all the videos would be copied too.</p>
 24076: <p>TL;DR</p>

<ul>
<li>Use separate iMovie Libraries for each video project.</li>
<li>Duplicate projects for each version.</li>
</ul>

<hr>

<p>This is the current workflow I've come up with:</p>

<ol>
<li>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 <a href="https://video.stackexchange.com/questions/25934/how-to-create-a-lightweight-backup-for-an-imovie-project-i-e-without-all-the-v">backup much easier</a>. 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. </li>
<li>Create a new Project, and call it <code>master</code>. This will be the <em>only</em> Project you ever edit directly and will always represent the latest changes.</li>
<li>Start editing your Project. Once you get into a state where you want to "save" it as a version, go to Projects, and duplicate <code>master</code>. Rename it to <code>v0.1</code> and optionally add a description. E.g. <code>v0.1 - initial transitions done, still missing credits</code>.</li>
<li>Continue working on <code>master</code> and creating more versions as you go along. E.g. <code>v0.2 - before making large scale changes to the contrast of all the clips</code>.</li>
<li>Once you're at a point where you want to share your video (e.g. via uploading to YouTube), create a <a href="https://semver.org" rel="nofollow noreferrer">major version</a> number (E.g. <code>v1.0</code>). This will make it really easy to come back to the "YouTube" edit of your video, for example.</li>
<li>If you continue making changes, continue using the same versioning scheme to make <code>v1.1 - Credits fixed</code>, for example.</li>
</ol>

<p>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.</p>
