I've been working with C# recently, but I learned to program in C++. However, the term API is rather vague to me and I'd like to clear it up. I do understand it is a method for interacting with a set of methods and classes associated with an application or code base. I do not understand how to create one. Do you collect a bunch of header files? Do you compile some source code and include the created .dll in another project via a Reference?
I ask because I'm looking to include ESRI's ArcSDE API in a project, and I want to understand it from a ground level first. The only documentation I've been able to find was about how to write a good API, and how to document it.
TLDR: Please describe some API basics, what is is and how it's made.