The most confusing thing is pointers, not because pointers themselves are confusing - you already understand passing by reference/value and therefore the concept of having a reference to a value. It’s confusing because the syntax used is. I highly recommend reading through this page:
You’ll want to learn about header (.h) files and how they’re used (you define what properties/methods your class will have) and .cpp files (you implement those methods).
Also, take what error messages are telling you with a pinch of salt, they can often be wildly misleading.
Personally, I prefer to learn by setting myself a goal (make a game!) and learn everything I need to achieve that. However, in this instance I would make sure you know pointers and how you use .h/.cpp files first. Most other things you should pick up easily on the way given your strongly-typed background. There are some oddities, but you’ll find them as you go just like in any language.
Also, where possible use the Unreal Engine data types as they’re cross-platform and generally safer to use. This page is a good overview of what’s available (specifically, note that they’ve implemented their own containers, e.g. TArray, and base types, e.g. int32):
Then, I’ve found that this FPS tutorial has been a fun introduction to learning UE4 from the C++ side: