1) The Linux kernel would be a good one to start. There are a lot of good resources out there for getting started with that. Work on similar nix kernels could be helpful too. I've done a little work on the FreeBSD kernel which has decent document, and NetBSD, which has poorer documentation, but a bit better code quality and a helpful community.
2) A good bit of companies hire people to do direct work on the kernel. Redhat is the first that comes to mind. I imagine most if not all of the Big N* companies have teams working on doing kernel work. Many hardware and silicon companies also have kernel work available. Not sure about companies in your specific market, unfortunately.
3) C mostly. I imagine having solid C++ knowledge, but I don't think there's much, if any, C++ directly in the Linux kernel. Knowing other languages never hurts, I see a lot of relevant job postings mentions Python / Perl, I assume mostly for automation. For more specialized roles I imagine there are some other languages that could be useful.
I can't give much information on the other questions, as I'm just a hobbyist. If I said anything that's flat out wrong, please feel free to correct me.