Interfaces are used to describe the needed information and the expected output of methods and classes, without providing information of the explicit implementation.
Classes can implement interfaces, and interfaces can inherit from each other. If a class is implementing an interface, this means all functions and procedures exposed by the interface exist in the class.
A special aspect of interfaces in delphi is that instances of interfaces have a lifetime management based on reference counting. The lifetime of class instances has to be managed manually.
Considering all these aspects, interfaces can be used to achieve different goals: