For language: In embedded world, C. Scroll down, far, to see C++. C++ has its use, but its use is much rarer in embedded applications. Any other language, and you've painted yourself in corner - an obscure language that is usable with only one processor family, one tool and one tool provider. An OS is not a language, strictly speaking, although it adds many concepts, words and expressions. Learn embedded Linux and an RTOS, and learn those good. It doesn't really matter which Linux version or what RTOS as again, it is the concepts that matter.
It does make much sense to learn the ideas of object oriented programming, as well other programming techniques. The ideas, concepts and good writing skills matter much more than the implementation tools. As my professor used to say: "You can write object oriented AI software in assembler; you can also write hairy assembler in Ada." (Ada is/was the most structurally sound language at the time.)
What is the point of the no IDE recommendations? As I see it, I graduated almost 30 years ago, and even for me, makefiles and assembler are something that I can read and I can also write them if I have to, but those are definitely low level stuff that we have tools for. If I would be hiring and the applicant says he choose not to use an IDE, it would tell me that the person likes to do things the hard way, does not care about efficiency, quality or productivity and is not, and does not want to be, up-to-date technically. I can also cut a tree with a pocket knife if I have to, and you can argue I would learn a lot of the internal structure of a tree while doing that. I still prefer my chainsaw for that job.