Programming microcontroller using UART
Firstly, how is the first micro programmed to begin with?


In the factory with a programmer. 


  Secondly could I use an FTDI usb to serial chip to do the same thing?


The Atmega328 can be programmed using the SPI 'protocol'. To get an SPI stream out of a FTDI chip requires some nifty programming.

Most 'self programming' development kits have a basic boot program in a protected section of their FLASH memory. It is put there in the factory. It has SW to use an interface (UART, USB)  which allow you to upload data into the remainder of the FLASH and jump to it. The protocol is proprietary but sometimes disclosed. 


  I could then use any IDE to program this chip. 


No, your IDE would need to know what interface and what protocol to use. Also working with breakpoints and stepping through the code is unlikely to work. 
It is the reason why forking out some money for a decent (ICE) programmer is worth every penny.