In a nutshell C is all about pointers and memory management (IMHO), if you feel comfortable with pointers you are well on your way.

C is really one step above assembler (IMHO), the language syntax is simple and you already know/use it in C++.

For embedded applications you will be exploiting memory and pointers to access the hardware, so you may see something as ugly as
Code:
*((unsigned short *)0x1234) = myVar;
for memory mapped I/O.

Before you start I would suggest that you master pointers and pointer arithmetic.

Your greatest challenge may just be trying to understand the legacy code and that is true in any language.