I understand that content type gives the definition for the set of fields in a list which can be reused while creating many other lists and a list template gets a copy of an existing list with or without content and reuses that copy with many other lists. Can anyone explain a clear cut difference between content types and list templates? Moreover, where will the template definition be stored? is it in the file system or in the content Database? Will the Content type definition be stored in the content Database as well? If so, why? can anyone please clear this doubt?
The difference is, that a list created from a template is not coupled with the template after creation. For example: If you add a new field to the content type, all lists can be updated automatically to include the new field. That is not true for a list template.
All definitions (content types, list templates) are stored within the content database, because it is THE place to store everything related to the content.
@Marco :- The list created from a template still shares the schema with the template definition which it reads from the front end from the disk. ONLY when you modify a specific list instance schema DOES the schema go into the DB. And even then, only the DIFF from the original schema is put in the DB. At runtime, SharePoint combines the schema in a smart way to render your list.
Getting to the original question:
The difference in short is, content types are a way of grouping fields such that they can be shared across lists.
However list schema are much much richer objects. List schema not only allow you to include content types and fields, they also allow you to describe the views that the lists has and control many important list properties like the ViewForm and EditForm Urls and whether it's a public list or not etc.