Что из себя программно представляет API?
API - это не само приложение, а описание того, как одно приложение может взаимодействовать с другим.

В случае winapi - это описание того, как ты можешь взаимодействовать с виндой (как раз через вызовы определённых функций)

В случае веба - описание того, какие http запросы ты должен слать для совершения тех или иных действий.

Консольное приложение в принципе может быть некоторый способом для взаимодействие с чем-то - git тому пример, но у консольного приложения тоже есть свой контракт
API - это  буквально интерфейс, т.е. способ (абсолютно любой, хоть через .txt файлы) взаимодействия с программой. 
Если вы не соблюдаете интерфейс, то вы не можете взаимодействовать с программой программным способом. Если вы пишете интерфейс, то другие обязаны следовать вашей инструкции.

Правильно ли я понимаю, что 
API может быть любым. Но чаще используют некоторые удобные общепринятые шаблоны, например: web json rest api, интерфейсы в c# или dll библиотеки.