centos is an enterprise operating system that offers good support and security fixes for many years (even if they come out with newer versions).
fedora is a "free development" operating system and usually support and security patches for older versions are very limited when new versions come out.
in other words, fedora is best for your desktop... centos is best for dedicated servers (if we compared fedora vs centos).
CentOS is essentially RHEL except RHEL is not free.
Oh and FreeBSD is best if you know what you are doing but there are a lot of incompatible software for freebsd but nothing that cannot be fixed. FreeBSD has a steeper learning curve than redhat-based systems
