What is an interface?
What is it not?
An interface does not have any way of telling you how it will come good on its promise - for that you need an implementation. It is just a promise. For example, if you go to an insurance company and sign up to be a customer they promise to replace or repair the stuff you insured. You need to pay up every month of course. The promise does not state HOW they will replace or repair your stuff. Once you need the insurance company to deliver on its promise you will probably call them up and they will tell you what to do - the how bit becomes clear... The company has rules and regulations to deliver on their promise. You don't care what those are, you know that they will deliver on their promise because of your interface (or contract).
Interface based programming has become very popular because of Inversion of Control (AKA Dependency Injection) frameworks. There are may. Google it. There are some frameworks that sucked at appropriate use of interfaces, like J2EE, thankfully we have been rescued by JEE5. The nice thing about interfaces(IoC/DI frameworks) is that you get to split the promise and the delivery mechanism (the implementation). You get to pick the implementation that suits you best, just as long as it delivers on the promise made by the interface.
Why use interfaces?
If you encounter an interface that says it will make the moon disappear and David Copperfield and the US Military decided to implement it you can know for certain that the implementation will be very different!