Mainly the amount of information they give you, and the availability.
uname is defined by the POSIX standard and is available on every Unix and Unix-like OS, and gives you information on the OS type, version, and architecture.
/proc/version, as part of the proc pseudo-fs is only available on Linux, and gives you some more detailed information about the kernel, and where and when it was built.
/etc/redhat-release is Red Hat (and derivates) specific, probably not available on any other distribution, and tells you the brand and version of the Linux distribution (not the OS) you're running.