Wikipedia definition is:
An application programming interface (API) is an interface or communication protocol between different parts of a computer program intended to simplify the implementation and maintenance of software.
In simple terms,
An application program interface (API) is a set of protocols and rules for building software applications that specifies how different software parts should interact.
Even simpler terms…
An API is just a bunch of code that allows two programs to communicate with each other.
An API may be for a web-based system, operating system, database system, computer hardware, or software library. Some popular APIs are Google Maps API, YouTube APIs, Twitter APIs etc.
How do they develop API? Do they share everything?
The answer is, obviously not. They use abstraction to show whatever is necessary and everything else is hidden.
In building software, an API simplifies programming by abstracting the underlying implementation, the basic structure. It only exposing objects, functions and actions which the developer needs. For example, if you're building an API for an email service, you don't need to show how the overall email structure works to everyone that uses the API. You can just simply provide a user with a button that performs all the steps for fetching and highlighting new emails. In building an API for file input/output, just show a function that copies a file from one folder to another folder and not the overall file system operations that are occurring behind the scenes.
Crating APIs and exposing your data data with that API can improve the customer experience. How? Well, one simple argument is that using Google Maps API, many people are learning how the Google maps works and building even better applications using that API. It's expanding Google maps acually and there are tons of examples like that.