"Competency in the design of software under the Linux operating system"
"Basic familiarity with C programming" really mean?"
It means that you can write, compile, run C programs and store them where people can find them. I means that you understand pointers in your sleep, that you understand data structures such as "struct" and that can write basic dynamic data structures such as queues and stacks. It may include your knowing of more advanced dynamic structures as binary trees. I am not sure if whoever uses that phrase "basic familiarity with C programming" includes socket programming - You'll just have to ask that person specifically.
"Can I possibly learn C++ on my own (which I already am) and then do projects?"
I learned C++ on my own. It took me 8 weeks - 6 weeks where I was banging my head into the wall trying to understand the language, and 2 weeks where something clicked and I was actually able to write C++ programs, as opposed to compiling C programs with a C++ compiler and calling myself a C++ programmer that way. OOP including mixed inheritance will probably drive you out of your mind. And of course, if you don't understand pointers and memory management, your experience in learning C++ will be an experience in pure massacre-ation :)