I don't think learning traditional solution development will necessarily help you that much with learning the basics of the SharePoint solution hierarchy or necessarily that much with development going forward either. There's certainly no real down side to knowing the traditional solution approaches, but there really is a vast amount of information out there to catch up on, and even then many of the techniques are now deprecated, or at the very least discouraged going forward. This is doubly so for development with SharePoint Online, where your access to deploy server-side solutions (using the Server-Side Object Model) doesn't exist, and even access to PowerShell commandlets is extremely reduced.
In regards to your specific questions:
- A Site Collection in SharePoint is a parent container for one or many sites. Many administrative functions can only be applied at the Site Collection level, and affect all of the sites across the entire Site Collection. Site Collections typically have their own level of administrators, although Site Collection Administrators have access and privileges in all of the sites within their collections. You generally enable and disable 'features' at the Site Collection level (although there are site and farm/tenant level features as well) -- which make different services available to your To make things somewhat complicated, you refer to a Site Collection as a
Web
in C# or JavaScript code references.
- A site is the basic unit of organization for content within SharePoint. Every site collection contains at least one site, and all content is stored in sites. There are certain features and settings that can be controlled at the site level (similar to the Site Collection level settings) but their impact is limited to their specific sites. Sites contain libraries (which contain files/documents) and lists (which usually contain data, such as a contact list, as opposed to just documents).
Other things you should look in to that will make your SharePoint toolbox a bit more complete (in addition to the basics sites/libraries/lists/apps) are Workflows, Search, InfoPath Forms (even though it's officially deprecated...) and then really good deep dives on the REST and JavaScript Object Model Client-Side APIs. And as kind of my own aside/opinion -- learning a binding framework like knockout or even angular can be very helpful when working with JS in SharePoint, especially considering that you won't want to invest too much time and effort on forms in InfoPath.
What worked the best for me was to pick up a few books written by some very smart people and do some reading. I can recommend a few, but there are really many good ones out there. A few ones I like, in no particular order:
I certainly think these books are great and their authors have put a lot of work into them, so I would encourage you to buy them or access them through a book subscription service (like safari or books 24x7 in skillsoft) if your work/school has one available... But you can certainly head over to your local library or book store and check out some of the finer points as well.
I also think that the Microsoft Virtual Academy SharePoint Core Solutions Jump Start and Advanced Solutions Jump Start courses are very well done and can help someone like yourself (familiar with some web development already) get in to working with SharePoint.
Just as a note, questions like 'what is a site?' and 'what is a site collection?' can be kind of difficult to pin down in a nice concise way, and my answers really are over-simplifications that may not cover everything -- I am definitely looking to some of the other experts here to edit/suggest changes to those sections of my answer as necessary and I'll look to update the info myself if I think of anything else as well.
SharePoint is sometimes frustrating to get working exactly like you want, but I really enjoy working with it because the infrastructure it provides on the security, backup, and management fronts lets you really work on business problems instead of reinventing the wheel every time you want to build a new application to perform what would otherwise be a fairly basic task.
Anyway, hope that helps -- good luck!