This is just a starter document, it should not be considered complete. Most of the information of this document is based on http://www.mozilla.org/scriptable/ and Creating XPCOM Components
Interfaces allow XPCOM components to expose their functionality to the outside world while hiding the inner details of the component implementation. Interfaces are written in an Interface Description Language.
There's an extension
extensions/python that bridges the gap between XPCOM and Python, allowing scriptable interfaces to be used/implemented from/in Python scripts.