Yes you can! You can’t copy a “Function” node (purple) but you can copy anything else. You can even paste it into a text editor to see the pseudo code of the nodes. See below for quickly setting up the variables when copied.
So long as the parents are equals (both of base type actor for example) there shouldn’t be much that needs cleaning up.
If they aren’t equals, then yes it can take some work, but you can’t just swap the base class in C++/C# without making changes either.
You can easily do this, drop a get node for the variable in the graph, Ctrl+C, Ctrl+V in your new graph, right click the node and choose “create variable”, it will create/add it to the blueprint.
As for the C++, you shouldn’t need to manually create the folders (use the editor command to generate instead), but if you do and want visual studio to recognize it, right click on the MyGame.uproject file and select “Generate Visual Studio Project Files” then re-open the .sln, this refreshes the project to include all manually created items.
Not trying to say it’s perfect by any means (blueprints can be rather limited in usefulness depending on what you are creating), but they are great for prototyping and scripting purposes. Blueprints (or Unreal C++) behave differently from C#, I agree, but most things listed here can be done already.