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.
When we label an interface as scriptable, we're saying that components exporting this interface can be referenced (through this interface) from scripts (e.g JavaScript), and that we can write new components implementing the interface using script languages.
XPConnect is a technology that allows scriptable interfaces to be used/implemented from/in JavaScript scripts. No other scripts languages are supported by XPConnect.
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.