Interfaces are very straight forward. It's easy to think that they are more complex than they actually are.
If your program calls some function or other (e.g. a function inside a DLL) and that function returns an 'interface pointer', then what you have is a simple way of calling a whole bunch of closely related functions (now called 'methods') in that DLL through that single pointer. That's it! Nothing more!

The interface pointer simply points, indirectly at least, to a table of function addresses.
From a PB coder's point of view, it allows us to easily use COM objects for example (since COM objects expose their functionality through interface pointers). Just as importantly, however, is that we can easily create our own simple OOP classes through simple interfaces.
I much prefer to create libs which expose simple OOP classes (as opposed to myriads of functions) since they allow me to bundle together all related functions and their associated data. It also keeps, in the case of a dll, the method names hidden from prying eyes because individual methods are not exported (made public) in the dll. No amount of snooping through the DLL binary will reveal the method names.
For example, I am just this minute making use of a simple class I created for dealing with a stack of integers. When one of my apps needs to use such a stack it simply calls a function in the stack lib. This function simply allocates memory for a suitable stack, sets a few member variables and returns a suitable interface pointer.
Through this pointer I can then call functions to push/pop integers as I see fit.
If I then create a second stack through the aforementioned creation function, I get a second separate interface pointer and a separate distinct stack. I can use the two interface pointers to push/pop away at my heart's content and at no time will one of the stacks interfere with the other. In this sense you can see that each interface pointer not only provides access to the appropriate functions for dealing with the stacks, but also, keeps all the relevant data structures etc. neatly packaged away behind the scenes.
I can probably hack up some example if you wish me to.
**EDIT : too late!
