Uma interface em base serve pra definir alguns padrões que a classe que vai implementá-la deve ter. Geralmente usamos pra garantir um certo comportamento das outras classes que vierem a implementar uma determinada Interface.
Os métodos de uma interface são 100% públicos como você mencionou, porque você nunca vai executar uma interface, ela serve de esqueleto pra outra classe, ou seja é pra determinar métodos "padrões usáveis" pelo objeto, não teria sentido declarar algo private ou protected na interface, já que isto só iria rodar "internamente".
No PHP5 estão a inclusão de visibility, classes e metodos abstract e final, métodos mágicos adicionais, interfaces (como citei anteriormente) e clonagem.
Interfaces de Objetos permite a criação de código que especifica quais métodos e variáveis uma classe deve implementar, sem ter que definir como esses métodos serão tratados.