Okay, so I've created an example model doing what I think you're talking about. I actually ended up using Process Flow combined with a little bit of custom code. Essentially the Process Flow Gives you a little more direct control over the Task Executers so that you can isolate their specific tasks more simply I feel.
It acquires the Task Executers as a resource (I combined the two task exectuers into a group called "AGVs" and connected that to a resource within the process flow.) Then I made the model produce two types of items to illustrate what you described: where Item Type 1 (red) only requires one AGV, and Item Type 2 (green) requires both AGVs.
The Process Flow will create an item and then decide based on its Item Type whether it will acquire 1 or both AGVs. When both are required. I have them both go to the pick up location, then I place the second AGV within the first, for the visual of moving together. (In order to avoid the issue that Jorg Vogel is talking about, we had to write a custom code that calls the reassignnetnode() command, so that the second AGV won't return to the point he was removed. And instead reassign him to the netnode at the destination.) After dropping off the item carried, AGV 2 is moved back into the model and set at the location of AGV 1.
I've attached the model below, feel free to pick it apart and use what you need.
taskexecuterexample.fsm