Using an Arduino for learning embedded C programming
The Arduino is a great place to start embedded C programming. You can use both C and CPP. There are tons of tutorials online and there are a bunch of books available. In addition there are lots of libraries available on GIT HUB for interfacing with all types of hardware like RF24 Wireless Transceivers.

If you want to go into more low level programming, you can. For example, you can set all Port B pins to Output:

// the setup routine runs once when you press reset:
void setup() {                

  // initialize the digital pins as an output.
  DDRB = 0xff;
}