You can't have a CNAME record for something that also has another type of record.... I think that includes SOA records or NS records. That may be where the confusion comes from.
There is also confusion regarding how they are resolved.
If an A record is requested, but a CNAME is encountered, the resolver will then look up A record for the resource indicated by the CNAME.
If the CNAME is specifically requested, it will return itself as expected.
Couple this with different implementations of mail servers (and other stuff) not strictly following RFCs...... that led to a general consensus among many greying sysadmins now to try to avoid using CNAME records wherever possible, as they were more trouble than they were worth.