Собственно первый вариант очень прост. Грубо говоря, создавая плагин имей в виду, что любая переменная или любой метод объявленный как public может быть использован другими разработчиками, которые решат "подцепиться" к твоему плагину и использовать его в качестве API. Т.е. любой плагин уже сам по себе API.
С другой стороны если ты делаешь действительно API, то просто необходимо учесть возможность того, что твои функции будут время от времени меняться, но API должно быть максимально неизменным от версии к версии. Чтобы плагины написанные под одну версию, сохраняли свою работоспособность и с последующими версиями твоего плагина.