Queues are first-in, first-out data structures where elements are added to the rear of the queue and removed from the front, and can be implemented using arrays where the front and rear indices track the start and end of the queue, with circular queue implementations overcoming space limitations by treating the array as a circular buffer. Common queue operations include enqueue to add an element, dequeue to remove an element, and checks for empty and full queues.