@mbbaker This is just my educated guess as someone who has written interrupt driven multitasking stuff in assembler during the Pleistocene era
.
Anytime you have independent processes that have to communicate, they have to do it through some kind of buffer because the time slices that each process will receive are not under the programmer's control. Compare with cooperative multitasking using co-routines. So if 2 or more Pd processes have to stream audio between them and not miss a real-time deadline, there has to be a fifo buffer between them.
How big a buffer is required? That depends on each OS and differs from moment to moment depending on what other processes are competing for CPU time. Some processes may lurch forward in execution while others wait to be scheduled. So it can't be predetermined, and therefore it's a configurable option.
In my one project that used [Pd~}, -fifo 1 worked without issue. The lower the number, the lower the roundtrip latency between processes, so I guess that means the fifo size is a tradeoff between latency and reliability.