Interfaces are one form of abstraction, which just means ignoring details that don't matter so we can focus on details that do matter.
Say I write a method that takes a List as a parameter. You can call my method with any object that implmements the List interface. I ignore the details about exactly what kind of object it is and focus on the detail that it can do List operations.
A class can implement more than one interface. So you could take almost any class, add "implements List" to its declaration, implement the list methods and pass it to my method. This gives you a lot of freedom. Your object doesn't have to be just one thing - the type it extends. It can implement several interfaces.
In more advanced designs we also use interfaces to control dependencies. (Dependency meaning we have to know all about something just to compile.) For example, Sun "owns" the
JDBC interfaces and the various database vendors have to implement them. We depend on stable Sun APIs, and we don't depend on individual database vendors.
Powerful stuff, no? Keep asking questions!