In order for content of a directory on the filesystem to be 'webservable', you gotta have a Directory directive that encapsulates it, and the files have to be accessible by the user that your webserver executes as. Most default installs have one Directory set up and all of the content falls under it (ie. /var/www/).
This is not mandatory, you can have content served from underneath other directories, as long as you have another Directory section defined for it. You can take multiple directories like that and make it seem like one happy tree with an Alias directive.
You can also prohibit serving certain parts of an otherwise 'webservable' tree, for exmample to prevent include files containing DB connect strings, passwords, usernames, etc.
Same rules apply to scripts, just with ScriptAlias directive.