Are all pipes unidirectional / half-duplex, i.e. one way from one process to another?

No, we can have multiple readers / writers. It depends on Unix ver. Some might be full duplex, bidirectional: any end for read/write