Code Portability: @jippie answered that pretty good.
Development environment: The free, fully integrated AVR Studio is the standard for Windows. An alternative is the gcc port WinAVR. Linux users use the gcc port avr-gcc, with it's own standard library, assembler, objcopy, programmer software. Code is not directly compatible between the Atmel compiler and gcc and standard libraries are different.
Programmers: Get an ISP(in-circuit programmer). Design your PCB-s with ISP capability even in the release version. I use an unofficial programmer, grabbed it at the local hardware store for ten bucks. Unfortunately, making your own programmer requires that either you have another programmer (to program the chip), or you have serial or parallel port on your PC. You could google around for the last option.
Also, I haven't heard of a programmer, capable of handling both 8-bit and 32-bit Atmel uC. But what do I know.