How to setup runners/pipeline to it runs one merge request after the other, but with parallel tasks within the merge request?

I have multiple groups/projects/repositories. Every time a merge request comes in for which the CI pipeline needs to run (or i guess also when the pipeline is started in another way) i want everything to go into one queue and wait till the previous thing is completed … except … within a particular stage where i want to parallelize as much as needed. How can i set this up?