You can do this in one Workflow Project. The following image shows a simplified overview of how it would work:
You first want to import two integration libraries into your Workflow project: Workflow Advanced and Demo. The WorkflowAdvanced library allows us to add a Merge component and split multiple outputs from one component while the Demo library will make a SinglePathDemo component to use to split up the loop we introduce with the 'For Each Element in Collection' component.
Use the 'For Each Element in Collection' component based on your collection that has the Primary User data in it. The SinglePathDemo component ("split the loop" in the example) is used to quickly work through the collection and create Workflow tasks for each user all at the same time. Use the Item Output Variable Name of the For Each Item in Collection component to setup your "To" recipient in the email inside the Start Process of your Dialog Workflow component.
Add a Merge component after the Dialog Workflow and connect it like shown. The Merge component will wait for all the open tasks in the Dialog Workflow to complete before passing on in your Workflow. Without that, the first person that goes through the Workflow will work but any other users will get an invalid task link.
Hopefully that explains it well enough in a nutshell. I have a couple of Workflows setup like this and haven't had any issues with those.
EDIT: Forgot to mention, this will only work in your scenario if this is an Auto-Start workflow! Replace the Start component with a Configurable AutoStart and set the Workflow Type to AutoStart under the Publishing tab of the workflow.
If you have a Form Start workflow, this would still work but you would need another Dialog Workflow component ahead of this example to host your initial form.