There are two important libraries of functions: the NX Open library and the SNAP library. NX Open is big, powerful, and complex. SNAP is much smaller, much easier, and less powerful.
You can call NX Open functions from many different programming languages: C/C++, Java, Python, and any .NET language (Visual Basic, C#, etc.).
You can call SNAP functions from any .NET language (Visual Basic, C#, etc.), though the documentation focuses mainly on Visual Basic.
You can mix together NX/Open and SNAP calls, so a good strategy is to use SNAP functions when they're adequate, and use NX/Open functions when you need more power or flexibility.
A good place to start is to work through the tutorials in the first few chapters of the "Getting Started with SNAP" guide.