In compliance mode no user can overwrite or delete the object version — the documentation says 'including the root user in your AWS account' — and the retention period cannot be shortened or the mode changed. Governance mode stops most users but is bypassable by anyone holding `s3:BypassGovernanceRetention` who sends the bypass header. A default bucket retention period works in either mode. Holding until explicit release is a legal hold, independent of mode. And Object Lock requires versioning either way.
Official docs