Can I mix P2PKH and P2WPKH inputs in the same transaction?
Is it acceptable to mix P2PKH and P2WPKH inputs in the same transaction as described above?


Yes, absolutely. In the same way that you can mix multisig and P2SH and P2PK inputs in the same transaction.


  When would I encounter a situation where "all txins in a transaction are not associated with any witness data"


When you're not spending any SegWit outputs.


  But even in the case where the inputs came exclusively from P2PKH (not P2WPKH) UTXOs, wouldn't I still have witness data (i.e. the signatures) that need to be "segregated" at in the 'witness' portion of the transaction?


No, those signatures would be "witness data" (in an abstract sense), but they're not segregated. Spends of P2PKH outputs require a pubkey and signature in the scriptSig of the inputs - not in the separate witness section.


  Or is it saying that if all inputs are non-segwit, it means the transaction itself is non-segwit, and I should therefore use format (a) -- despite having segwit output(s)?


Exactly. When you're using P2SH, nobody even knows the outputs are SegWit outputs, so it clearly can't matter. All that matters is whether any witnesses are needed for spending.