If you need a player (or pawn) depends on the type of game - for a “guess my number” game it would not be necessary.
Instead of a pawn i recommend creating a “Character” - that is a sub-type of “pawn”, but it comes with a big bonus: It already has built-in for “walking”, “Swimming” and so on.
In your project settings you define the standards. The “Boss” of your standards is the “Gamemode”. If you want to create your own PlayerController from scratch i also recommend to create your own “GameMode”. The Game Mode defines loads of things. One of them is the “DefaultPawn”. You should set the DefaultPawn to your character blueprint, then when the game starts it will load your custom GameMode and see that your charatcre is the default pawn, then it will automatically use (posess) this one for the end user to control.
Well they don’t use custom player controllers, but they do use custom player characters. Typically, in the example projects, the inputs to move your character are defined in the player character blueprint.
When you’re starting out, I might suggest open an example project like the FPS one and try to tinker with it to make it do additional things. For example, try adding a sprint key or implement double jumping rather then trying to start from scratch right off the bat.