NB: I have not actually tried this, my answer is based solely on looking at what options are available in 2013 workflows and specifically Task Processes.
OK, for the purposes of this answer, I am going to assume that you do not want to go on to Stage 2 unless the outcome is Approved.
If you look at a Task Process, there is a section called "Task Options" and another section called "Outcome Options". In "Task Options" there is a checkbox called "Wait for task completion". One of the options for "Completion Criteria" is "Wait for all responses". For "Wait for all responses", the description is:
This option will make the workflow wait until all of the responses
have been collected. It will then return the outcome that received
the most number of responses. In the event of a tie, the response
that was received first will be returned.
So it seems to me you have your solution for waiting for all tasks to be complete right there. By setting that option, the workflow will be paused until all tasks have been completed (even if it takes several weeks), and only then will the task process finish and return a value to your complete_level1 variable.
Now, assuming that you do not want to proceed to Stage 2 unless the outcome is Approved, I would also take a look at the "Outcome Options" section, in particular, the "Default Outcome" setting. I would set this to be Rejected. This way, if there are any errors or problems with the Task Process itself, the outcome returned to your complete_level1 variable will not be a false positive.
Then, yes, in your Transition to stage section of Stage 1, you test your variable. If it is Approved, transition to Stage 2, and if it is not, transition to End of Workflow.
The one problem I see with this approach is that "Wait for all responses" basically chooses the majority outcome. If your requirement for what constitutes approval is that approval must be unanimous, this obviously won't work. However, looking a little deeper, there is another option for "Completion Criteria" called "Wait for a percentage of a response", and the description of that is:
This option will make the workflow wait until a specified percentage
of a particular outcome is received. If the required percentage is
not achieved, it will return the default outcome.
So, you could set the percentage there to 100% Approved, and then set the default outcome (in the "Outcome Options" section) to Rejected. My assumption (again, I haven't actually tried this) is that if the Task Process is waiting to check for 100% Approval, it will be waiting for all tasks to be completed before being able to make that evaluation, so again, you get that waiting functionality from this setting.
Now, all that being said, if you do not care what the outcome in complete_level1 is, and you deal with whatever the outcome was in Stage 2, then do't check anything in the Transition to Stage section, just go ahead and transition to Stage 2. The "waiting for all tasks to complete" functionality is still being handled by the Task Process itself.