I finally figured out how to create a schedule that you can build in reverse so you know when you need to start!
Step 1: Show the constraint column in the table view part (this is so you have quick access to the type of constraint on each task)
Step 2: Create a milestone task with a “Must finish on” constraint set to the date you want the project to end.
Step 3: Build the project in reverse, adding tasks above the final milestone and adding dependencies as you normally would. (make sure you have a proper chain from the last task to the first task) Make sure that all the tasks you are adding have the “As late as possible” constraint.
Now, if all your tasks are set to “as late as possible” and you have a milestone that “must finish on” a set date, you can adjust the duration of any task and it will move all of the earlier tasks backwards!