What is the most efficient way to create multiple versions of the same template?

Efficiency can mean a lot of different things, do you mean efficient to you as a dev (least lines of code?) or efficient to the user (loading the quickest etc).

In any case, template_include fires AFTER WordPress has determined what template it should load, but before it loads it, so WP has already done the ‘work’ to determine the appropriate template, then you add in your function to take it in another direction. Depending on what you’re trying to achieve, you’d be better off either..

  1. Utilising the built in page templates system –
    http://codex.wordpress.org/Page_Templates

    Basically what @Milo mentioned here

  2. In order to offer more flexibility you can create a ‘parent’
    template and call subsections using get_template_part() based
    off of conditional variables (such as theme options, current page
    etc) While you can do the same thing with template filters and load
    an entirely new template, you probably only need to change certain
    sections of the template, so loading these using get_template_part() allows for more reuse of code etc