C is probably the lowest of the languages that you have mentioned and if you're a lot interested in programming to the kernel as well hardware then C is probably a good language of choice, but C is not really an OOP language and there is no support for classes, only structs.
This is where C++ comes in the picture, it is derrived from C and was intended to be more OOP, because it supports classes and such.
Both C and C++ is native languages and is not platform specified and compiles to machine language (assembly) and that makes it easy to make cross platform.
I could go really deep into their difference and when C is better than C++ and the other way around, but as with all languages. Each one got their pros and cons.
Now to Java. I've never really used Java, but as far as cross platforming goes then it's probably the easiest one to port from one platform to another, because it's not compiled to assembly, but to the java jit (Just in time compiler). That means you can just take a .jar file that you made on one platform and then take it to another and it will run perfectly fine. (Most of the time) However the performance of Java is not really anything near to C/C++, because they're compiled directly to assembly and that makes their speed/performance better. I won't really go into judge Java as a language, its framework or anything, because as I said, I've never really used it.
C# is basically Microsoft's answer to Java, but well don't let that confuse you, because both languages are different and far from close. They only share a bit syntax-similarities, because both C# and Java is really high level languaged and uses the c-syntax (Using braces like { } for scoping). C# compiles to IL which is the instruction set that their JIT uses. About portability is C# probably the language of those you've said, which has the lowest amount of options to make cross platform, because of the .NET Framework, however it's possible with things like Mono, Wine etc.
At last Python is not a compiled language at all and it's interpretered. It was made in C (or C++) if I am correct? There is some "homemade" compilers though that will parse the interpretered Python code and compile it. Python is a powerful language and a lot popular. It's easy to make portable to other platforms as well, because it does not require any huge frameworks or platform specific things to run. Python's syntax is different from C, C++, Java and C#'s, because it does not use { and } etc. and a completely different syntax. It's all about whitespaces when creating scopes, actually.
I cba to write more and I got such a huge headache, so I will go sleep. I could be wrong at a lot of my points and I am really tired, so excuse me. Also I do not know everything, is just what I could pck up on the top of my head. There is a million other things that could be said, but if you want my honest opinion then use Google.