A few quick comparison between FPGAs and MCUs for those only familar with the latter.
MCUs can only do one thing at a time - they can give the illusion of multitasking via interrupts but can only execute one instruction at any one time.
An FPGA is just a big bunch of logic gates, that can do multiple things simultaneously, using dfferent parts of the device. These parts can be completely independent or interconnected.
You can if you want create one or more processors within an FPGA, although this is generally more expensive in terms of silicon area than a dedicated CPU chip, but it can be useful sometimes. A few FPGAs have hard-coded CPUs on-chip.
FPGAs generally have lots of pins, the minimum is generally 100, the maximum a couple of thousand in big hairy BGA packages. FPGAs do not come in DIL packages!
FPGAs generally support a wide range of I/O voltages and standards, including differential standards like LVDS, typically used for >100MHz signals.
FPGAs are typically programmed using VHDL and Verilog. These are NOT programming languages, but hardware description languages, which describe how things are connected together.
For example in C a=b; generates code to copy the value of b to a. In VHDL a<=b; tells it to physically connect signal b to signal a.
Designing with FPGAs is done at a much lower level than MCUs. You need to work out how to design the logic to achieve the functionality you want. The software will abstract some of this to a higher level, for example creating adders, counters etc from syntax similar to arithmatic, and creating state machines from a collection of If/then or Case type constructs.
An MCU will always run any program you give it as long as the clock rate is within the datasheet specs.
With FPGAs, the internal timings depend on the logic of your design, and how it is physically routed on the chip, so you have to tell it what speed things need to run at, and the tools will attempt to arrange the logic to achieve this, and will tell you if it can't. In practice if you are nowhere near the performance limits of the chip you may not need to worry too much about the details of this, but if you are pushing things in terms of speed and/or high utilisation of the chip, it can get very involved indeed, and can mean hand-placing and routing critical parts of the design.
In terms of the development process, FPGAs are typically SRAM based, and use an external configuration memory to hold the design data, which is loaded automatically at power-up - these days this is typically a cheap SPI flash chip. There are a few FPGAs with onboard nonvolatile memory, but these are generally more expensive.
Programming is done via a JTAG interface - these are generally manufacturer-specific, but clones of most of the common ones are available cheap on ebay.
While developing you typically download the code direct to SRAM, as this is faster than programming the flash. To make the design load on power-up, you program it into the external configuration device - this can typically be done via the same JTAG port.
Why/when to use an FPGA?
Basically when a microcontroller isn't up to the job, either due to lack of speed (either overall throughput or realtime latency), or the need to handle multiple tasks simultaneously. Also if you need large numbers of IO pins, or multiple IO standards, an FPGA may be preferable to an MCU.
For tasks where a microcontroller could do the job, you wouldn't normally use an FPGA, as in most cases the design process is a lot more work.