what is the difference between buffering and queuing?
I think that, especially in the context of  real-time DSP the terms are really talking about the same topic.

Perhaps the most general Wikipedia reference about buffers would include both first-in-first-out (FIFO) and last-in-first-out (LIFO) but a LIFO buffer is usually called a "stack".

If it's a FIFO buffer, we usually call it a "queue" and, particularly if input and output to the buffer are asynchronous and controlled by independent source and destination, then there is a corner of the science we call "queueing theory" that worries about the size of the FIFO buffer, where the input and output pointers are, and what needs to be done to avoid "buffer starvation" (i think i am not misusing the term).

As far as real-time DSP is concerned, with uniform sampling, the only thing related to this topic that I worry about is, simply double buffering, of which I can't find a good on-line reference right away.  By FIFO buffering both the input and output to a DSP process, one can write more efficient code where the processing block time is the time it takes to fill or empty the buffer (i.e. $B$ times the sample time, where $B$ is the number of samples in the buffer block).  At the beginning of that block time the process is guaranteed to have $B$ valid samples waiting for the input and the process need not guarantee the correctness of any of the output samples until the very end of the block period.  This can save processing overhead by loading states and coefficients and other parameters just once (rather than $B$ times, once for each sample) and storing the states just once.  So the cost of this overhead is amortized over the $B$ samples.  The price paid is a delay of $2B$ samples.