Not sure this has really been answered, at least not without decoding all the posts and comments.
So, the key difference between Full and Copy-only backups if whether or not the LSN (Log sequence number), and specifically the DatabaseBackupLSN is updated.
When you take a Full backup, the DatabaseBackupLSN is updated. After taking the full backup, if you take a Differential backup that backup has a DatabaseBackupLSN which matches that of the Full backup, and therefore SQL can link the two together (eg it knows from those LSNs that the diff followed the full).
The problem comes when you have scheduled backups running, so you have an initial Full backup, and then a sequence of Differentials. If you manually take a Full backup it will update the LSN, and then from that point onwards each Differential backup you take via scheduled backup will reference that new LSN not the original one. In the event of needing to restore, you could restore your scheduled Full backup, but when you tried to restore any of the Differential backups taken after the manual job you'd find it would fail as the LSNs no longer match.
With a Copy-only backup it doesn't touch the DatabaseBackupLSN, and as such doesn't break that chain of backups.
There's a good description of the issue, as well as why so many people misunderstand it here http://sqlmag.com/blog/breaking-backup-chain-redux-or-eating-crow which includes good visual guides like this one :
and for a good explanation of the four different LSNs and how they're used have a look at http://www.mssqltips.com/sqlservertip/3209/understanding-sql-server-log-sequence-numbers-for-backups/