Delay two Pbind

ad 1) It’s not possible to ‘multi-node-expand’ the Pattern with an array value for ‘dur’. For good reason, because it would lead to ambiguities. The syntax [\midinote, \dur] is useful for something else: if you want to couple certain midinotes with certain durations, e.g. with Ptuple.

ad 2) As the answer to (1) is no, a different strategy has to be taken: data sharing http://doc.sccode.org/Tutorials/A-Practical-Guide/PG_06g_Data_Sharing.html

(
x = Pbind(
	\dur, Pseq([2, 1, 1, Prand([1/2, 1/3, 2/3], 1).collect { |x| ~a = x } ], 50) / 4,
	// shorter with partial application:
	// \dur, Pseq([2, 1, 1, Prand([1/2, 1/3, 2/3], 1).collect(~a=_) ], inf) / 4,
	\midinote, Pn(Pseries(55, Pwhite(1, 2), 12)),
	\legato, 0.5
);

y = Pbind(
	\dur, Pseq([1, 2, 1, Pfuncn { ~a }], 50) / 4, // Pfuncn defaults to length 1
	\midinote, Pn(Pseries(62, Pwhite(3, 6)/3, 12)),
	\legato, 0.5
);

z = Pbind(
	\dur, Pseq([1, 1, 2, Pfuncn { ~a }], 50) / 4,
	\midinote, Pn(Pseries(71, Pwhite(1, 2), 12)),
	\legato, 0.5
);
)

(
// ensure order of evaluation by slight time-shift, you could equalize with lag, but can be neglected with 0.0001 sec
d = 0.0001;
v = Ptpar([0, x, d*2, y, d*3, z]).play
)

ad 3) the premise must be changed: if you want to stop and resume Pbinds (to be exact: EventStreamPlayers) on the fly you should avoid Ppar / Ptpar! Instead you can start and stop single players, if you want to sync them you can play them on a grid by using the quant arg of method ‘play’.

(
p = Pbind(
	\dur, Pseq([2, 1, 1], 50) / 4,
	\midinote, Pn(Pseries(55, Pwhite(1, 2), 12)),
	\legato, 0.5
);

q = Pbind(
	\dur, Pseq([1, 2, 1], 50) / 4,
	\midinote, Pn(Pseries(62, Pwhite(3, 6)/3, 12)),
	\legato, 0.5
);

r = Pbind(
	\dur, Pseq([1, 1, 2], 50) / 4,
	\midinote, Pn(Pseries(71, Pwhite(1, 2), 12)),
	\legato, 0.5
);
)

(
x = p.play(quant: 1);
y = q.play(quant: 2);
z = r.play(quant: 1);
)

y.stop;

y.play(quant: 1);

z.stop;

z.play(quant: 1);

x.stop;
y.stop;
z.stop;

Already in this example you see that “measures” are synchronised, but not upward phrases.
But the even more tricky task in your use case would be to synchronise measures of dynamic length. I have no general solution for this at hand and today I’m to tired to think about it.
However there is another workaround: you could introduce mute variables, muting would not really stop the players but save you from sync quirks, in this case again Ppar would be fine again.

(
~mute1 = 0;
~mute2 = 0;
~mute3 = 0;

x = Pbind(
	\dur, Pseq([2, 1, 1, Prand([1/2, 1/3, 2/3], 1).collect { |x| ~a = x } ], 50) / 4,
	// shorter with partial application:
	// \dur, Pseq([2, 1, 1, Prand([1/2, 1/3, 2/3], 1).collect(~a=_) ], inf) / 4,
	\midinote, Pn(Pseries(55, Pwhite(1, 2), 12)),
	\amp, 0.1 * Pfunc { 1 - ~mute1 },
	\legato, 0.5
);

y = Pbind(
	\dur, Pseq([1, 2, 1, Pfuncn { ~a }], 50) / 4,
	\midinote, Pn(Pseries(62, Pwhite(3, 6)/3, 12)),
	\amp, 0.1 * Pfunc { 1 - ~mute2 },
	\legato, 0.5
);

z = Pbind(
	\dur, Pseq([1, 1, 2, Pfuncn { ~a }], 50) / 4,
	\midinote, Pn(Pseries(71, Pwhite(1, 2), 12)),
	\amp, 0.1 * Pfunc { 1 - ~mute3 },
	\legato, 0.5
);
)

(
// ensure order of evaluation by slight time-shift, you could equalize with lag, but can be neglected with 0.0001 sec
d = 0.0001;
v = Ptpar([0, x, d*2, y, d*3, z]).play
)



~mute2 = 1

~mute1 = 1

~mute2 = 0

~mute1 = 0

v.stop