Thanks for your question.
It is interesting that your question is not necessarily related to private data, but the lifecycle endorsement in Hyperledger Fabric since v2.0.
The lifecycle endorsement policy in my setup is "majority", which means that in a 3-org setup, 2 approvals are good enough for chaincode commit. That's the reason you see I only specify two peerAddresses when committing chaincode.
So in case 2 approvals are done, the chaincode is committed. Both approval and commit in fact is an update block to all peers in the same channel. Therefore all peers know new sequence are approved and committed, even those haven't approved or committed.
Having said that, if an org hasn't approved the chaincode, they cannot use the new sequence of chaincode although it knows there is a new sequence. And they won't use a previous sequence. We simply get an error message like "chaincode definition for 'mycc' at sequence 2 on channel 'mychannel' has not yet been approved by this org".
I also have another articles about lifecycle chaincode and let me know if you cannot find them.