Can someone explain why UE4 provide 2 different way of project creation methods? I am very confused since the documentation stated that a C++ project and use BP too as well as BP project can also use C++. What is the intention to get a BP only project? Is it because to remove the requirement of compiling the C++ code in VS right after the creation of the project? I really want to know any developer really just use BP in their shipping title with any C++ code? If at the end, the BP only project will always need the C++ part, why providing the BP only option?
The biggest difference between Blueprint projects and C++ projects is in what kind of template you start out with.
A Blueprint project has template content like it’s base character and game type implemented in Blueprint, and a C++ project start with them implemented in C++.
Both kinds of projects are full-featured Unreal Engine projects, you can (and probably will) end up with both C++ and Blueprint in any completed project, so it only changes where you begin. Choosing a Blueprint template does indeed save you from having to be able to compile C++ right off the bat.
As for building shipping projects with only Blueprint, this is very possible. Blueprint as a language is capable of all of the complexity of C++, so for many projects there will be little you want to do that can’t be done in Blueprint. I can’t speak for the performance difference between C++ and Blueprint, so I would expect that most games would contain some C++ elements, but it seems plausible for a team of many artists and few programmers.