The ICD project has created a framework for creating call queues for various software PBXs, with special emphasis on the Asterisk PBX.
ICD provides any number of ways to link up internal call endpoints, whether agents or other systems, to external endpoints, whether customers or other systems.
The most common scenario it is applied to is bridging a customer to an agent using almost any strategy you can imagine. If you want to use a predictive dialer, ICD does that. If you want to provide a customer callback function when an agent comes available it is easy to do. If you want to have customers directed to specific queues of agents based on skillsets, that can be arranged.
ICD is a framework rather than a turnkey solution. Although you can use it out of the box, its real power comes through when it is used with your own code to create a custom solution.