Where to learn the codebase logic to deduce your steps?

This is going to be a more general question, but I don’t quite know how to form it, so I thought I give an example.

I just started coding a PlayerController making use of OnInputTouchBegin. Using the Unreal Match 3 tutorial, I found out that I needed to set the boolean bEnableClickEvents to true.
I then typed dot and saw a few Add functions to use. Despite those being available and complicated for a beginner like me (the parameter, stated as being a delegate of FScriptDelegate is actually a class TScriptDelegate as far as the “go to definition” can tell, so how do I get a function to be that class, know what I mean?),
the better way to do this according to the tutorial is by calling the macro AddUniqueDynamic. Now how should I know that?
Digging further, I have to supply a void function with these parameters ETouchIndex::Type FingerIndex, AActor* TouchedActor. How would I know that? looking up the macro, it leads to __Internal_AddUniqueDynamic, of which the first two parameters are UserClass* InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr

This totally confuses me and it seems that these are not the only things that must follow some unknown logic that renders me incapable of deducing what to do next myself.

When do I have to use macros?
How can I identify when that’s the case and which ones are available?
An empty game starting up spawns a lot of stuff, how do I know where that’s coming from, since the default gamemode is none and I expect nothing to happen?