Coca cola as always an insightful and knowledgeable answer.
I see PIC again but is there really much difference between programming different microcontrollers?
Yeah, well I use PICs most often so I have a better grasp of what is out there for them...
As far as AVRs I would say the WinAVR (AVR-GCC ) suite is probably the most popular choice out there, seems like every time I come across an AVR program it's setup for WinAVR... And that it's C...
http://www.mikroe.com has the same BASIC, PASCAL and C compilers for AVR as they do for PICs...
Hop between their AVR and PIC (or even other micro) forums/literature and look at the sample code to get an idea on the differences, most of it will be in the front of the program setting up everything...
At the core no, most of the program is the same, it's setting up variables, addressing the correct pins, registers among other things between each system...
Once you get familiar with the language and the chips, porting between micros is pretty each most of the time, there are different quirks that have to be worked out but it's mostly painless...