This implementation is interesting because of the tricky way it uses a cons to hold the head and tail pointers. A result of this implementation is that the printed representation of the queue is a bit deceptive:
It looks like there's an extra element on the queue, but that's really just a result of how the printer wants to interpret a cons.
The front-ptr and rear-ptr functions are really implementation details, so if you wanted to use this is real code, you might want to wrap it in a module declaration and not provide them.
Queues are often used for communicating between processes and threads, and for buffering I/O in high-volume applications like web servers that tend to see spikes in input. However, queues used for interprocess/interthread communications also generally require additional synchronization mechanisms.