There are two issues at play here.
The first is knowing C and it's syntax. That simply comes with experience, and it makes no real difference what your target platform is (PC, AVR, PIC etc)
The second is knowing how to access the resources on the AVR chip. Things like setting up registers, using peripherals, reading/writing I/O etc. If you stick with Arduino then most of this is hidden from you.
But if you really want to learn microcontrollers then you have to learn to start using the resources on the chip. Start with I/O and then work your up to things like timers, interrupts, UART's, I2C/SPI etc. You usually need to do this on physical hardware so you can see some form of physical result. C really has nothing to do with learning stuff like this, it's the same process for assembler, BASIC, C or whatever, it's just that the syntax is different.
Dave.