Lists are the more common objects that we used/code in SharePoint. Basically list represents a type of data structure. It represents a collection of of items comprising objects of similar types. List structure and behavior is similar like database like contains rows and columns.
The data in the list is referred as a list item. A list item comprises a field, and fields contains data. Each field in a list item has a specific field type like Text/Number/ Choice/ Currency/ DateTime/ Lookup/ Hyperlink etc.., There are many different types of lists like Calendar/ Announcements/ Document/ Custom Lists etc.., Custom lists are the list which we can customize as we like i.e create custom columns/content types etc.., we can map work flows and event receivers to lists or list items that triggers for create/update/delete items.
Lists can be accessed in different ways like from SharePoint Site or External resources(Customized applications, services etc..,). We can create list through browser interface, programmable APIs, web services etc.., In SharePoint 2010 we can programmatically access and code against lists in a number of ways, those are
|Server Side Object Model||Core SharePoint DLLs will be used for building applications in this model. Microsoft.SharePoint is the core namespace (Example)|
|WCF Service||REST-based service that provides lightweight GETand POST functionality against a SharePoint list.|
|Web service||ASp.NET web services provides service functionality to access lists. By using this service based applications can be built (Example)|
SharePoint is very flexible so that we can create/ deploy our own custom WCF or web services in SharePoint hive/root to access lists but only draw back is when ever we upgrade SharePoint Server there may have a chance for deleting these from vti_bin or layouts.
By using any of technology mentioned in above we can access lists and write/ create our own solutions.