AK, I was a C pro before I saw my first microcontroller (miC for short). It didn't look like anything I had ever done before. Beyond languages, there are a multitude of programming paradigms. You can't just write a program for a miC like you would see in the C books. For a micC, you have to ensure that volatile memory is placed in RAM and not FLASH, you have ensure that the startup code is placed at the zeroth address, there is no operating system in a miC to provide dynamic memory allocation so you must define all memory at compile time, and you have to write your own interrupts.
I really think you should just plunge straight into a C book designed for miC's. The only thing you need to know about the actual language of C is the bare basics: math operators and relational operators, bit-wise operators, include files and source files, functions, structures, pointers, branches, and loops. That's it. You don't even need to know much about the print() function even though you'll see it over and over in tutorials. Printing is provided by the OS and, like I said, the OS doesn't typically exist in a miC unless you put one there.
Bit-wise operations are the most important thing for miC's that you won't see much of in the C books . A typical operation in a miC is to get a flag register from memory and mask it to see if some operation is completed (an analog to digital conversion perhaps). You'll be doing that over and over.