.NET is MS managed run-time. It's mainly used by c# and vb.net as MS's alternative to Java. It can
also be used by C++ as C++/cli which uses MS non-standard C++ extensions (such as boxing (^) for managed types). It's 'managed' in the sense that the run-time will automatically delete memory no longer used (similar to c++ std::shared_ptr) - unlike new/delete in C++ (or malloc/free in c). It can give access to a whole set of additional .net features (such as forms etc). However IMO if you want to use .net then you'd be better off using c# which was designed to use .net.
If you compile using WIN32 as c or C++ then you produce a .exe program. If you use UWP (Universal Window Platform) then you produce an app (not a stand-alone program) which can be used on different devices (based around .net I think).
There is also C++ winrt
which produces an app.
If you're going to be programming for Windows using any MS library (including WIN32) then you really need to become expert at searching https://docs.microsoft.com/en-us/
Note that whatever you decide to use on top of C++ (or c# if you go that way), there is a massive learning mountain to climb.
Then there this the (some consider now outdated) MFC which comprises a set of C++ classes encompassing the c based WIN32 api's.
To use WIN32 with VS, then make sure that you have installed the latest SDK as part of VS installation. If you want to use MFC, then this also has to be installed. Similar for c++/cli - this has to be installed separately. If you're not using windows gui then all you need to do is to include windows.h. You might also want to also have before the include:
which cuts down what parts of windows.h are actually included (speeds up compilation) and stops windows defining min/max macros which can interfere with std::min/std::max.
Note that you need to read carefully the documentation for every API used and note that some require additional include files (especially the network ones). Also for every function used you should always
check that the function has completed OK. How to do this is documented for each function.
You also need to pay attention to whether you compile as unicode (based upon wchar_t (16 bits) ) or multi-byte character set (set under project properties/advanced). WIN32 uses a whole set of new defined types
note W refers to unicode, A for ansi (multi-byte) and T refers to the type set by whether UNICODE/_UNICODE is defined or not.
Most WIN32 functions have 2 versions - W for unicode and A for ansi. eg SetWindowText(). Like this it uses UNICODE to decide whether to use the unicode or ansi version. However SetWindowTextW() is the unicode version and SetWindowTextA() is the ansi version.
Another useful resource for WIN32 is http://www.flounder.com/
(particulalry MVP Tips).