Controls - Place them in the Character Controller or in the character itself?

Hello everyone!

I’m wondering about the different ways you can set up your game in regards of character controls. As far as I know, you can place the logic that will drive your character either inside the Character Blueprint or as an independent Player Controller class blueprint.

Any ideas on what the differences between them are, and what they enable us to do - or some restrictions they might have?