I wish to write a c++ program with the goal of "baking" a 3D normal texture map.
A user must input a low poly and high poly model with the option to add a 3d cage mesh model. 
The program will run once the user press "run".

What is the best approach to get started?
What libraries can I use to speed up the process?
What data types are needed to handle in order to build such a program?