Why are there so many settings.php files one in each folder or sub-directory?
Refer the multisite doc as Molot suggested. We don't know how your site(s) have set up, so you have to experiment it yourself. 


  Q1: Why isn't there just one settings.php per sub-domain site?


There is. sub.example.com site's settings.php file is sites/sub.example.com/settings.php. The reason to have a whole folder is to make it possible for you to store files, modules, themes and libraries separately (sites/sub.example.com/modules will be only available to sub.example.com likewise.)


  Q2: What is the difference between /default/settings.php and
  /all/settings.php?


You should not have a settings.php file in sites/all folder. That folder is a special one that is used to store common files across all the sites, and the default modules/themes/libraries folder for the only site if it's not a multisite.


  Q3: And why are folders demo.[domain].org and [customer].[domain].org
  in the /sites/ folder? Perhaps they are just legacy folders left by
  the previous coder/hacker of the settings.php used in the those
  sub-domains.


If there are demo.example.com site, that site is probably using the settings.php inside to load the settings. You can however change this in the sites/sites.php file. Unless you override, demo.example.com site is using sites/demo.example.com/settings.php.