Here's the documentation on capabilities: http://mcforge.readthedocs.io/en/latest/datastorage/capabilities/. This explains capabilities, and how to use them.
1) You should be using capabilities if you want your mod to be able to work with other mods, e.g. have another mods pipes be able to extract and input items into your inventory. You can use interfaces if you are only gonna use it for your own mod, and no other mod has to use it to work with yours.
2) Forge has added capability support for the vanilla inventories, e.g. chests and furnaces. Ever modder should support capabilities. The main goal is, for inventories in this case, to say
TileEntity#hasCapability
on ANY
TileEntity
, and if it returns
true
, get it using
TileEntity#getCapabilit
and manipulate that inventory and let the
TileEntity
itself handle everything else.
Other people probably know how to explain it better, but this what my general idea of capabilities looks like.