I'm a programmer.
A different compiler is needed for each language, however you'll find that most, if not all, C++ compilers will compile C.
Java is a separate language, therefore needs a separate compiler (Java doesn't really compile as such, but that's another story and beyond the scope of this thread).
However, there are several key concepts relating to programming that are used in all languages - it's just that you use different code in different languages to do the same thing.
And no, you don't need to be a hardcore amazing programmer to use Linux. You don't need any programming at all to use Linux. But Linux usually comes bundled with loads of programming bits and pieces.
If you need more info, please ask.
Master of common sense. If you don't like it, stop reading.