Mage::getModel() will create a new instance of an object each time even such object exists in configuration.
$product1 = Mage::getModel('catalog/product');
$product2 = Mage::getModel('catalog/product');
$product1 and $product2 both have different instant of same object and also occupy different memory
As far as I know, all collections in Magento are resource models. They are instantiated by
It doesn't really matter which function you use; the latter one simply calls the first one. The Magento team simply chose to make collections part of the resource, probably because collections need to query the database a lot. Usually, you will not have to call
Mage::getResourceModel() for anything else than collections.