user1671: I plan on creating a homebrew Arduino breakout board using the ATMEGA328P smd version. I'm geeting confused by the wealth of information out there as to whether I should be using ICSP or ISP to program it. It is a blank chip, aka no Arduino bootloader on it yet. I'd rather not have to buy a specialized programmer to burn the bootloader, I do have another Arduino I could use to burn the bootloader and upload sketches to it with. 
So the question is; Do I use ISP or ICSP, or both?

user2881: To program it you could use an ISP programmer. In which case you would not need the bootloader. You can use an Arduino as an ISP programmer, but that's not really a long term solution, as you can no longer use the arduino for anything else.
The other option is to program it using a usb-to-serial. In this case you do need the arduino bootloader. To program this bootloader (once) you can use the above method, using an arduino board.
Third option would be implement USB into the bootloader, just like the completely Open Source Pro Trinket (bootloader and schematic). You'd have to add some resistors, zener diodes and a usb plug (just strip an old usb cable). A bit more technical and challenging, but definitely the cheapest

user368: ICSP is used for PICs, not AVRs. Use ISP, which can be performed either by an Arduino via ArduinoISP or by a dedicated programmer.

1671: <p>I plan on creating a homebrew Arduino breakout board using the ATMEGA328P smd version. I'm geeting confused by the wealth of information out there as to whether I should be using ICSP or ISP to program it. It is a blank chip, aka no Arduino bootloader on it yet. I'd rather not have to buy a specialized programmer to burn the bootloader, I do have another Arduino I could use to burn the bootloader and upload sketches to it with. </p>

<p>So the question is; Do I use ISP or ICSP, or both?</p>
 2881: <p>To program it you could use an ISP programmer. In which case you would not need the bootloader. You can <a href="https://www.arduino.cc/en/Tutorial/ArduinoISP" rel="nofollow noreferrer">use an Arduino as an ISP programmer</a>, but that's not really a long term solution, as you can no longer use the arduino for anything else.</p>
<p>The other option is to program it using a usb-to-serial. In this case you do need the arduino bootloader. To program this bootloader (once) you can use the above method, using an arduino board.</p>
<p>Third option would be implement USB into the bootloader, just like the <em>completely Open Source</em> Pro Trinket (<a href="https://github.com/adafruit/Adafruit_ProTrinket_Bootloader" rel="nofollow noreferrer">bootloader</a> and <a href="https://learn.adafruit.com/system/assets/assets/000/018/948/large1024/adafruit_products_protrink5vschm.png?1408558753" rel="nofollow noreferrer">schematic</a>). You'd have to add some resistors, zener diodes and a usb plug (just strip an old usb cable). A bit more technical and challenging, but definitely the cheapest</p>
 368: <p>ICSP is used for PICs, not AVRs. Use ISP, which can be performed either by an Arduino via ArduinoISP or by a dedicated programmer.</p>
