404 error if folder in public_html has same name as folder in craft/templates
This is because the 'projects' folder exists in both public_html and craft/templates, right?


No this simply means that you have no entry with the slug projects as soon as you create an entry with the given slug it will work.

You can also define a route in a config file 

'projects ' =&gt; 'projects/index.twig',


Generally your template path structure has nothing to do with your url structure. You should define which template should apply for which url route in your CP in the element settings or via config file or plugin

public function registerSiteRoutes()
{
    return array(
        'projects' =&gt; 'projects/index.twig'
    );
}