route and/or packing optimization algorithm What type of problem would this question fall under, are there known algorithms/heuristics for it, what would be good resources to learn more about solving it?

Given:


a list of items each with a destination location: the number of items per destination is unbounded (and can be zero for some locations). All items are at a central location.
a number of destination locations, each awaiting a set number of the items: the number of locations is finite, and small [under a thousand]
a number of couriers, all at the same point initially (the same initial location as the items); each courier has a maximum number of items they can carry: the number of couriers is very small [a dozen]
the duration of travel between all locations [all couriers travel at the same speed]


Problem:
minimize the maximum wait time of each location [the time it takes for all the items due at that location to be delivered]
by allocating items to couriers.
This specific problem seems to be an variation of minimizing the makespan in the job shop scheduling problem. Essentially, your couriers are modeled as 'workers' that need to process certain 'tasks', which are the delivery requests. We look for an assignment of tasks to workers that minimizes the time until the last worker is finished, the makespan of the assignment. 

The current problem is slightly different from the basic version, as it assumes all workers are equally skilled, but here some workers can process faster, as they can carry more items.

The job shop scheduling problem is an NP-complete problem, which means that we do not expect to solve this problem exactly in polynomial time.

One option is to model this problem and various extensions as an (mixed) integer linear program, but this generally means you either have an exponential time algorithm or have no guarantees over the quality of your result. 

A better idea for this specific problem is to use an approximation algorithm for the job shop scheduling problem. These approximation algorithms run in polynomial time and although they do not guarantee an optimal solution, they can give you an upper bound on the quality of the solution (e.g. The solution given will be at most twice the size of the optimal solution). There is extensive literature about this problem, so where to start mostly depends on the type of solution you're looking for.