What's the difference between c++ class and blueprint class( c++ based) ?

I’m learning c++ tutorial (FPS game) from First Person Shooter Tutorial in Unreal Engine | Unreal Engine 5.2 Documentation.

I created “class AFPSProjectGameModeBase” in c++ and bluesprint class “BP_FPSProjectGameModeBase” based on it. Then in “Project Settings/Maps and Modes/Default GameMode” , these two values all available. But i tested them, only the BP_FPSProjectGameModeBase works, so i don’t know the difference between them in UE editor. Is this mean for same class i must use the “blueprint version class” even though the “c++ class” available?