This may not be the answer to all your questions but at a minimum, yes, the installed kernel-source rpm must match the version number of your installed, running kernel exactly.
Since you don't really want to run any redhat kernel prior to the latest update which now is something like 2.4.18-19-8.0 there is no sense in having kernel-source 2.4.14-xxx installed or indeed any RH kernel-source package but the one matching the latest updated RH kernel. Kernel source for later stable releases like 2.4.19 and 2.4.20 that comes from kernel.org is a different matter. One thing that happens to people is that RH does not, by default, install any kernel-source rpm. So when people upgrade their kernel to keep their system secure, which is something that redhat makes easy to do through 'up2date' downloads, the kernel-source package on their installation cds no longer matches their running kernel, AND furhermore the 'up2date' and 'redhat-config-packages' utilities don't really demonstrate an understanding of the confusion this can cause. It would be nice to have a one step GUI option to install the most current kernel-source rpm despite the fact that kernel-source wasn't one the packages originally installed on your system. Instead you must locate a redhat ftp repository for updates and download the kernel source for your current kernel.
If you switch between different installed kernels occasionally, like say between 2.4.18-19.8.0 from redhat's updated packages and 2.4.20 from kernel.org, this means reinstalling/remaking the nvidia kernel module on each switch.