Atmega 328p program transfered on atmega 328

So I've written a program for my Arduino uno (which of course uses the long rectangular Atmega 328p AVR 28 Pin 20MHz 32K 6A/D - ATMega328P - COM-09061 - SparkFun Electronics ) and now that im transfering it to standalone I think I want to switch to the cheaper, smaller atmega 328 https://www.sparkfun.com/products/9261. My question is mainly just the issue of compatability, can I just transfer my program over (with an arduino bootloader) and plug everything into the corresponding pins? and if so do I still need the 16 mhz crystals with the 22uf caps? the data sheet tells me that the operating voltage is the same as the 328p but i couldnt find out much more.

Yes.
Yes.
Different signature bytes, will have to deal with that while programming.

what exact implications will the signature bytes have on my program?

Not on your sketch, just on the programmer that checks what chip it is talking to.
If you find the '328P section of AVRDUDE.conf and change the 3 bytes to that of the 328, it should bootload ok. Then change avrdude.conf back.

hello
can you specify where should be done this 3 byte change?
Thanks

In your Arduino folder, search for
avrdude.conf

Open it with Wordpad, Notepad++, whatever text editor you use.

About half thru, find this entry:

#------------------------------------------------------------

ATmega328P

#------------------------------------------------------------

part
id = "m328p";
desc = "ATMEGA328P";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x86;

avr910_devcode = 0x;

signature = 0x1e 0x95 0x0F;

In the signature line, change 0x0F to 0x14, and save.
Change it back for 328P chips.

I think that's all you need.
I don't know why 328 chips aren't supported directly, would make life a lot simpler.

The signature change is only necesary for uploading with external programmer. If you upload sketches with and FTDI bridge (Atmega328 with bootloader) then the signature change is not necesary.

Ok so i just have to grab a programmer and make the changes that crossroads said? Will the internal pull-ups and pwm pins still function the same?

All IO will work the same. There are a couple of really subtle changes that pico power provides that the vast majority of users will never take advantage of, have to review the datasheet really carefully to find them. If I recall, most involve the brown out register. 328P also draws slightly less current than the 328.