Surely it would make more sense to store them all in one file
No because then that file would be HUUUUUUUUUUUUUGE!!!
and impossible to maintain.
You'll soon get used to it.
Is there a way to learn which files store which functions, and where they are stored?
You can always just browse through the headers themselves (in /usr/include) to see what they're up to. Or if you know what a function's called but don't know where it is, there's an excellent reference section at http://cplusplus.com
If you're after a good reference book have a look here: