Web Application (SPWebApplication)
SharePoint web application is an ASP.NET application managed as a virtual directory. This is referred to SPWebApplication in SharePoint Object Model. This can be termed just as a physical structure necessary for the entire SharePoint taxonomy. This physical structure is ready for creating sites/ sub sites immediately. There can be multiple web applications deployed in a SharePoint farm.
Site Collection (SPSite)
Site collection is a hierarchical set of sites which can be grouped together. All site collections need to exist within a SharePoint Web Application (described above) and there can be multiple site collections within a web application. Site collection is represented by SPSite object in SharePoint Object Model. A site collection contains one top-level site and any number of sub sites organized underneath it. All the sub sites within a site collection share common features such as shared permissions, galleries etc. For example, a column which is created at site collection level is available across all the sites underneath the site collection.
A SharePoint Site can never exist in vacuum. It is always created a part of a site collection. A site in SharePoint Object Model is represented by SPWeb object. A site under a site collection inherits lot of features from the site collection. For example, a site column created in a site collection is available to all the sites across the site collection.