I don’t know exactly when, but at some point Sitecore introduced support in its ASP.NET Web Content Management for web.config include files. Include files allow administrators to define configuration in files separate from the main web.config file, which can simplify configuration, release management, and other aspects of the system.
A recent post on the Sitecore Developer Network demonstrated some confusion that can result from this feature. If you only look in the web.config file and not the include files that can override web.config, then you might not see the settings that actually take effect. I imagine this gets especially confusing if you allow multiple include files to override a single setting; I am not sure how Sitecore determines which setting in which include file to apply in such cases.
To help resolve such confusion, Sitecore provides a tool that allows you to investigate the effective configuration after it applies the include files. You can access this tool at the following URL on your server:
Note that for security, the Sitecore installer configures IIS to deny anonymous access to the /sitecore/admin subdirectory, so you may have to open access to this subdirectory in IIS. In production, you should require authentication to access the /sitecore/admin subdirectory, and/or restrict the IP range with access.
Unfortunately, the tool does not indicate which file defines the effective settings. So although it reduces the value of include files, to avoid confusion, I personally would try to use include files only to add settings and other elements that do not appear in the main web.config file. For instance, I would not use an include file to add a processor to one of the default pipelines, but I might use an include file to define an entire custom pipeline.
Update: The Detailed Config Report Sitecore shared source module appears to indicate which include files override settings.