Yup - unlike in Windows, when you do kernel update (well, it doesn't tell the user when the Windows kernel is updated if it is, but anyway) in Linux the new kernel is installed beside the old kernel. Basically the new kernel filename is the same except for the version part. This is because it's difficult to say if the new kernel works or not before trying to boot it, and in case the new kernel doesn't boot it would be sad if you were unable to boot your system at all. Thus the new kernel is set as default to boot, and the old is kept in the menu in case you are actually unable to boot the new kernel (in which case you can just reboot and select the old kernel from the menu, fix the matter and go on).
You really need only one entry in the bootloader menu (per one installed operating system). All the other are more or less "just in case" (except for other operating systems' entries); for example Ubuntu has basically three options (+ maybe more, if you upgrade the kernel): one to boot the system normally, anotherone to boot into "failsafe" or "maintenance" mode (usually it disables some modules and probably enters single-user mode), and one for Memtest (in case you want to test your memory - your computer's, I mean). The other options can be removed, but you should make certain that the entry works that you leave there
With Grub it would probably also be possible to have no entries, and when Grub loads up, just manually type the kernel location etc. (create a boot entry on the fly) and boot that. Easier, though, if you have a list ready. And since nowadays harddisks are big compared to the size of the actual kernel, which can be really small if you compile it yourself leaving unneeded modules off, you can just as well have all the old kernels there if you don't mind. Or if you need more diskspace (talking about megabytes here, not anything "big" with nowadays standards), just remove the files and re-organize the bootloader menu file.