in general store data at the highest shared level
to get started you can have everything in the player controller. just get it working
then, if your project really demands it, you can split out functionality from there to various classes
usually the impetus for code separation is to support collaboration on a team
only in AAA scoped cases will it matter for optimization concerns. given that you ask these questions, i assume and would hope you are not attempting to make a AAA scoped project.
and code separation is a detriment to maintainability so I don’t do it unless there is a clear and present reason compelling it
in other words, walk the straight and narrow path and only deviate if there is an impassable blockade