What is an ASIC?
An ASIC, an application specific IC or chip is targeted towards a use case (or use cases). It means it is specifically designed functionality which can be sold in high volume. An ASIC consists of analog and/or digital functionality connected to the pads of the chip. These pads are connected via bond wires to the pins visible outside a chip . Examples are stepper motor drivers in the automotive industry, xDSL modems in consumer electronics, VPU’s for vision processing and deep learning. An ASIC is a fixed design (hence the first time right goal for cost reasons). Routing of the logic is final, but most of the time, small bugs can be fixed with spare gates (good tactic to foresee those) and a partial new mask set (reconnecting).
What is an FPGA?
An FPGA is an ASIC. An FPGA can be reconfigured. Many different digital designs can be put on the same chip by downloading a new FPGA bitstream. An FPGA has cells and interconnection which is determined by that bitstream. The bitstream makes the necessary connections inside to implement your design. Since the FPGA is configurability built on top of an ASIC, they are less optimal in gates per mm2, power and speed than having the same design in ASIC. But for development, prototyping (for ASIC) and for low volume products, FPGA is a cheaper solution than an ASIC. An ASIC is only cost effective in high volume, especially in the latest technology.
What is a microcontroller?
A general microcontroller is a state machine that takes instructions as input and executes them. And those controllers range from very simple to very complex. From the Picoblaze (pacoblaze) to the most advanced ARM core, anything you want. Hence, the main thing is that a software person writes a program. Unless coded in machine code, the software is compiled towards a specific ISA (Instruction Set Architecture) specific for that processor. Consequently, the processor executes it starting at the first line of code. But it is less complex than a System-On-Chip (SoC). Because in a system you have a variety of communication interfaces or dedicated logic next to the controller or processor. Admittedly, there is a boundary where a controller becomes a system. But that is usually marketing that defines the exact wording for a chip. And processor and controller are sometimes used for "a machine that executes instructions".
Conclusion
Now we know that every controller has an instruction set that allows you to use the features the controller has. For example, there is arithmetic. You can add and subtract numbers, fixed or floating point depending on what the controller supports. To link the three types mentioned in the question together, a microcontroller design described in HDL (hardware description language) can be targeted towards an FPGA. You can configure the FPGA and use the FPGA with the microcontroller design inside it. Similarly, you can put more data processing next to the microcontroller in the FPGA if the extra logic fits in the device. Hence, we are talking flexibility here. If a DSP soft core (HDL) is overkill, you can put a different processor inside the FPGA. Plus, if the business case allows it, you can put a microcontroller design inside an ASIC as well. Application specific and with a considerable cost, but it is possible.
Microcontrollers, PIC comes to mind, are just the controller in a chip. They are mass produced and have a specific ISA. hence, they have typical applications where a PIC is used to control -for example- a camera. Low cost and simple. Hobbyists use them as well. Think of Arduino built around the Atmega. As soft (IP) cores processors are heavily used in system on chip designs (FPGA and/or ASIC). Consequently they control and monitor the other parts of the system. Because the program that runs on the microcontroller allows flexibility to configure the chip differently (applications). For ASIC, usually the (boot) program for a controller resides in an EEPROM outside the ASIC. For FPGA, the application program is usually uploaded or already present in the block RAMs inside the FPGA.