PLC is a special microcontroller designed for industrial application. It is for controlling machinery or processes. A microcontroller is a microprocessor that can be used for any type of application. The basic difference between PLC and microcontrollers is only the way of programming. Most common way of PLC programming is with graphical language Ladder logic programming which looks a little more similar to electrical schematics than a computer programming language.
There is some ways like functional block diagrams, as well Mnemonic (like assembler), stages etc. Second significant characteristic is the infinite loop (cycling) through the ladder start-to-end and again from start. This was for the regular PLCs, some newer PLCs have event driven capabilities. Also PLCs are more restricted in calculations.
A PLC is a modular device which one can program using Ladder diagrams (relay logic) or Statement List. It is optimized to handle several digital inputs and outputs, and is more rugged for use in industrial applications. Basically it scans the inputs, and determines the outputs based on the logical conditions programmed into it by the user. It internally uses a microcontroller to handle all input, output and logic scans. Application area is mostly industrial automation.
Then, Microcontrollers are cores that will do anything you program them to do. They probably can be used in each of the above applications, but with varying effectiveness. As always, your work is in discerning which option will work best in a given situation.