Привет,
Първо ще се опитам да подредя малко въпросите ти в такъв ред, който да ти бъде полезен при изчитане на отговорите. Ще добавя някои въпроси от мое име за да има по-голяма последователност и да няма термини, които първо биват използвани, а едва след това обяснени.
1. Какво е API и как се използва?
Накратко това е отворена врата(интерфейс) към вече готова написана функционалност.
2. Как се създава 'свое собствено API'?
Елементарно. Когато от един модул извикваме функционалност - дефинирана в друг модул обикновено го правим чрез извикване на някакъв вид API функция (това е независимо от езика). Т.е. в един модул някой е написал функционалност (този някой може да съм аз днес, аз преди година, Microsoft или колегата на съседното бюро), предоставил е възможност тази функционалност да бъде извикана (интерфейс или API с код, библиотека или услуга (service) ) и аз мога да я използвам. Т.е. ако напишеш един клас, тип, променлива, константа или функция в един модул и някой (дори ти) би могъл да ги използва (що годе легално) в друг модул - то вече си написал собствено API. Пример тук:
https://www.youtube.com/watch?v=kwZlE7chLZ0
3. Как може да бъде съставено Restful API?
Тук вече нещата стават малко по-сериозни. Тук може да се намери нещо добро като за начало:
http://blog.ijasoneverett.com/2013/02/rest-api-a-simple-php-tutorial/
но след това е добре да се определи какъв проблем да решава предоставената функционалност.
4. Какви знания трябват и на какво ниво?
Зависи от сложността на функционалността, която желаете да предоставите. Ако следвате някои от линковете по-горе стъпка по стъпка ще създадете такова API, но едва ли предложената функционалност ще намери много почитатели, т.е. няма да имате много клиенти. Добре е също да се знае какви ще бъдат клиентите ви и на какъв език да пишете, за да могат те да го ползват.
Ако желаете да предложите цялостно решение за някакъв проблем и да предоставите на бъдещите си клиенти интерфейс за ползването на предоставената функционалност е добре да помислите за дефиниране на проблема, документация, дизайн, сковаване на прототип и примери за ползване и едва след това да обявите въпросното API (с уговорката, че само по себе си API-то е просто врата към функционалността - клиента няма да се интересува от вратата, а от самата функционалност) .
Надявам се да съм бил полезен.