What is recommended class type for manager class?

Using your own GameInstance class derived from UGameInstance is the way to go to create that “singleton” like class for your project. This is how I did it on my first UE4 project, and when I went to work for another studio, what do you know, this is also what they did!
The GameInstance class as 2 functions you can override that will be useful in your case of creating and managing your game “managers”:

virtual void Init() override;
virtual void Shutdown() override;

As for the managers themselves, it depends on what you need them to do, but I would say that 90% of the time, you should just make it derive from UObject.

Hope this helps and good luck with your project.