Interfaces and abstract classes are different in that interfaces describe behavior, while abstract classes define partial implementations. Interfaces have the advantage that they can be implemented by any object which provides the necessary method, regardless of what classes that object inherits from.
Abstract methods are typically used to provide a partial implementation. An example is the List interface which defines the behavior of List collections, compared to AbstractList which provides some of the methods needed by most List implementations, to make it easier to implement a List. Lists aren't required to inherit from AbstractList, but many implementations do, but code which uses a List never has to care whether the implementation they use extends AbstractList or not.
Some people use abstract classes as a substitute for interfaces, but this is generally considered an anti-pattern.