Learn C on a PC. Master that before undertaking C on a microprocesor.
What? Standard C is going to be the same, whether it's on a PC, or on a microcontroller like the Arduino or a Teensy 3.1 (the one I use). Sure, there are things that are going to be different, but these are not difficult to deal with in most cases. Pointers are not going to be handled any differently in either context.
All we really have for small memory (Kilobytes, not Megabytes) microprocessors is C and C++, where the latter can and does get out of control in terms of needless abstraction forced upon us by those with a C# background.
Why are you blaming this on people with C# background? This can just as easily be blamed on those with C/C++ background.
Straight C makes the code self-obvious.
No, I don't think so. Just because code is written in straight C, it doesn't mean things are going to be obvious. I've had to deal with some pretty badly written straight C code in my time as a developer, and things were definitely not obvious.
On larger/Linux based MCUs, there's Python which is a high level language and weird at first but kind of a refreshing change from C++. And these large MCUs can do Java.
These more powerful MCUs that can run Linux (but don't
have to) can do a lot more than just Python or Java. They can do Go, Ruby, and a host of other programming languages, just like Linux on a PC can do. I program in Python and Go for the Raspberry Pi, BeagleBone (Black), and PandaBoard (ES). I can use any programming language that has been built for the platform I'm dealing with at the time. Most of my Device Control System is written in Python, but I plan to rewrite it in Go at some point.
For the Teensy 3.1's I am using now, I just use TeensyDuino, since the code I have for my robots is written for the Arduino, and it's easier to deal with.
Go for the Arduino or Teensy (with TeensyDuino, of course). There are many fine resources out there, as well as knowledgeable people willing to help new folks out when needed.
8-Dale