The Controller is the BP that proc’s input and is the part that is attached/detached from actors/pawns/characters when you possess them. Think of it like a physical DualShock controller (or a brainslug!) that has some logic tied to it. As you go around from actor to actor, you unplug from one and plug into another.
The character/pawn is the BP that defines what the input actually does, how it does it. It’s also the thing that holds what mesh you have, hitpoints, other stats you define; anything that represents a critter in your world. Think of it like a table-top miniature that is the critter, minus anything to control it (no brains).
The controller attaches to a pawn/character and then as the controller takes in input, it calls the corresponding events on the pawn/critter.
Everything in your game wants to use an overall set of actions in how they interact with the game world. Everyone jumps, everyone attacks, etc, etc. HOW things do what they do can differ from critter to critter. That human has a dodge-roll but the large ogre has a stumbling-sidestep. As a controlled-critter, the input is ‘to dodge’, the controller is general but the local-implementation is specific.