What is needed to know before modifying Mission Planner

I am planning to tackle the task of modifying the mission planner to make a custom version to better suit my project, but I am kind at lost of what knowledge I need to study before. I know you need to know C# and visual studio, but probably there is a lot more besides those two. So what tools, languages, APIs, software and such are needed to be able to handle Mission Planner?

C# at intermediate or above level, WinForms, Gmap.NET, and a couple dozen of other libraries that MP is using.
If you don’t have experience with C#, MP is not a recommended codebase to start with.