C, C++ are high level languages, used to write softwares that will run on several processors. The compiler knows the target and produces the low-level code for it, if it has the libraries needed.
Example : I also use a PIC32 from chipkit, with "mpide" IDE - Most programs that I've written for the UNO will compile for the UNO32 - Some won't : the "sofwareserial" library is not implemented for the PIC32, I can't use it in my uno32 programs .....
If you want to write your soft in assembly language, then yes, there are a lot of differences between each processors, and you have to learn the assembly for the family processors (actually, the processor) you want to use.
Edit : sure you still need to learn what is related to your controller family, the way to use the inputs/outputs, the words the compiler understands (pinMode, digitalWrite.....), the pins that are used for communications, interrupts etc.... but there are IDE projects that try to make this more "universal" http://uecide.org/