@Lincoln Sellers Sorry for the late response to your follow up question. The best way to have the transporters take items directly from the TaskExecuter is probably using Process Flow. I'll show you how we set it up (see first attached model):

Most of this logic is clearly shown visually (no need for code). After objects are created from Process Flow into the 3D environment they are sent to "LoadList" by the Queue. The TaskExecuter then pulls 4 items from the list and uses the "All of Nothing" option. Then we used another list to move the objects from the TaskExecuter to the Transporters (you didn't specify how many objects each one could take, so we set it to 4). Also, we referenced the 3D TaskExecuter and Transporters by creating a Schedule Source activity for each with simply 1 token that does not repeat.
About pulling pallets like a trailer, the answer is simple if I understand your question correctly. Just go into the AGV network properties and select the "Attach Loads as Trailer" option in the first tab.

Your main question seemed like you may want to implement these concepts into a larger model at some point. We've used the same logic as the first model but used Subflows and Task Executer Process Flows to facilitate model adaption (for example adding more processes, more TaskExecuters, etc). See second attached model for reference. In this model we added another TaskExecuter by going to the "Attached Objects" option in the Quick Properties for the AGV Task Executer Process Flow. Both Task Executers then use the same logic.

Let me know if you need clarification on anything.