The best scenario is when C++ is underlying Blueprints.
You would always want to make the base, structural code in c++, expose them and extend in Blueprints to tweak values or make simple logic.
Make Blueprints the “FrontEnd” development of your project.
With that said, I suggest you start a c++ project that creates the basic classes for you, expose the properties and extend it in Blueprints.
You can do amazing stuff with BPs, and C++ can slow down your process if you don’t know it well. But, again, the choice of BP over c++ will depend on the scope of your project and the bottlenecks of the language.