CAML can be used in various ways to customize a SharePoint site, including the following:
- In script or code that implements members of the SharePoint Foundation object model, where CAML strings are passed through method parameters, assigned to properties, or returned by methods and properties
- In SOAP messaging that passes CAML strings to a SharePoint Foundation Web service to interact remotely with a deployment
- In front-end site definitions used to instantiate SharePoint sites
- In SharePoint Foundation Features to add specific functionality within a particular scope For supported SharePoint artificacts, always use CAML unless there is a reason not to. Use this link for more details.