EIP-155 is optional, and performed by the wallet software. EIP-155 is only active for when the Chain ID is not 0.

A transaction that specifies a Chain ID of 0, that is signed by a private key can still be broadcast on any chain (so long as that address of that private key has a balance and the nonce is correct).

If a transaction is signed with Chain ID of 1, it will only work on the homestead (ETH) chain, so would not be repayable on ETC (at the time, the serializing format was completely incompatible with ETC anyways).

However, prior to ETC implementing EIP-155, the ETC transactions were still being signed by wallet software with Chain ID 0, so they would be repayable on ETH. So, it would have been enough to prevent ETH from being replayed on ETC, but not vice versa.

I purposely use Chain ID of 0 occasionally when I want to deploy the same contract to multiple networks, with the same contract address, since I can just broadcast the same transaction on each network.

If you are using parity as your wallet, then yes, you no longer need to worry about replay attacks, since they build EIP-155 transactions internally. But if you connect to your parity node with antique wallets, parity will still happily accept transactions with a Chain ID of 0. Any recent software should be safe though.