The differences will show up in device signature bytes, causing you a little grief when its time to bootload/program, which can be worked around.
ATmega168 0x1E 0x94 0x06
ATmega168 0x1E 0x94 0x06
ATmega168A 0x1E 0x94 0x06
ATmega168PA 0x1E 0x94 0x0B
So I guess not really too different.
Functionally they are similar, with subtle differences you are not likely to notice.
P for picopower.
-PU vs -PN is a temperature rating. -PN has higher upper temp than -PU.
-ND is a Digikey thing for how it is packaged for sale (individually, tube, whatever)
I used to know what the A meant, need to look it up again.
You can find all their datasheets here
http://www.atmel.com/products/microcontrollers/avr/megaAVR.aspx