Magento have two parts first as the model, with the Model it handles the business-logic, as Entity Attribute Value (EAV) Model, and the another Resource part, which only deals with talking to the database.
The collections in magento are the collections of the models, when we need to get result from two model we use collections.
Mage::getModel() will create a new instance of an object each time even such object exists in configuration.
getModel will always return a new instance of the requested model every time.Mage::getModel() is used when you want to have the fresh data from the database. Example is when you want to show records from database.
$product1 and $product2 both are different instants with different memory allocation.
Models in magento contains a reference to a resource model which loads the data, i.e. A Product Model has a Product resource model. A model object can be used to call the collection object.It can be done as :