I couldn't find an answer for that on the docs.
When I deploy a version of a processor group to my production enviroment what happens to those flowfiles that were mid-flow? Do they finish using the previous version or does it actually change the flow that comes after the point that the flowfile was at the update moment?
It first stops all processors, which means flow files remain in whatever queue they were in when the processors were stopped. It then updates the components in the versioned flow in place, and then starts everything again. So as you described, a flow file could have passed through half of the old flow, and now passes through the second half of the updated flow.
If you don't want this behavior then you would need to manually ensure you drain out the processor group by stopping source processors, or entry points to the process group, and waiting until all queues are empty before performing the change version to upgrade.