Difference of ASIC and FPGA is ASIC is custom layout. You custom layout ASIC then you send to fabricate. FPGA is many pre-fab gates with many fuses or anti-fuses. You load compile code into, vary like firmware and it program. Some FPGA load from prom everytime on power up, other "burn" once.
A FPGA is a collection of different types of cells/ and/nanad/or/nor/not/flip flops. You get a fixed number of each gate on the die and you program the wiring of these gates with your FPGA software. FPGAs are limited in their speed and usually can not work faster than 150mhz in practice. One other drawback of FPGA is that they are very expensive for example one high end altera FPGA costs over $1500.00. The only advantage of FPGA is that they do not carry an NRE charge.
ASICs on the other hand are very fast up to 4 gigahertz so far and getting faster. In ASIC you select a die size and usually a fixed number of gates fits on this die but there are no restrictions as to what types of cells you are allowed to use on this die. ASICs are much more flexible than FPGA. Basically today if you are a hobbyiest or you are prototyping a demo board you will use FPGAs. In all other cases you use ASICs.