“Real” game developers always use the right tool for the job.
Even though it is perfectly possible to produce a professional game using only C++ or only blueprint graphs, most professional Unreal Engine projects use a mix of both. They both have their advantages and disadvantages.
One main advantage of blueprints is that they are very fast to compile, which makes it a lot more convenient to prototype and iterate with them. But C++ solutions are usually(!) much more performant at runtime. So when a feature that was initially prototyped with blueprints turns out to be a performance bottleneck, then redoing it as a C++ class can sometimes help.
And depending on what problem in particular you are trying to solve, either one might be easier to create, read and/or maintain. In general, blueprints excel at “simple” logic flows (“when B button is pressed, jump!”), while C++ is the better medium to convey logic that requires more complex algorithms and data structures (“when AI agent is idle, pick a job from the master job list using this rating function, break it down into steps using goal-oriented action planning and push them onto the task stack for the agent”). But there is a large grey area in between where either approach is reasonable.
And it’s not uncommon either to use a mixed approach of creating a blueprint graph where some of the nodes are custom nodes implemented in C++ specifically for that one graph. This approach is particularly common in teams that contain both programmers and non-programmers who want to be able to tinker with the game mechanics without having to ask a programmer for every little change.
So the answer to the question “should I learn blueprints or should I learn c++?” is “Yes!”