XPFE & XPToolkit permit consistent creation of user interfaces across the 3 major platforms. As for why the two names: "'XPToolkit' is rather synonymous with XPFE. Though the former term seems more concrete than the other, and therefore is not an exact replacement, no one is completely certain why we have both." . From here on in we'll refer to XPFE (because it's shorter to type). Note: This is also commonly refered to as Toolkit.
XPFE uses XUL, XBL, and RDF to achive the goal of being able to programmatlically instantiate a button (for example) using the same api no matter what platfrom you are on. XPFE uses a combination native and custom widgets to achieve the toolkit. However, from an api perspective, it is platform neutral.
XUL and XBL is responsible for creating the widgets. RDF's are used to be able to deal with the multiple data sources that are required to deal with the different i18n, l10n, and themeing issues involved in the toolkit.