Knowledge needed to create plugins and modify UE4

I can program in C ++, but I do not know what to do for create plugins for the unreal engine and how to modify the engine to my liking. Can you explain to me what I have to learn in addition to the programming language to know how to do it?

Hi. I don’t know whole truth but here some links that I think are related to your question:

C++ Extending the Editor | Live Training | Unreal Engine This is overview.

C++ Plugin Based State Machine | Unreal Engine Plugin Based Gameplay.

The Unreal Engine Developer Course - Learn C++ Actually it’s about basic C++ and how to use it with UE4 - You can skip basic and focus on how to use C++ with UE4. They explain how to use source control and rebuild.
Wiki have some introduction tutorial and Documentation have page related to plugins but they are brief.