How to Create a Multi Purpose Theme?

The way I do it is create multiple layout files, add the option to choose which one to use on the template options panel:

layout-left.php
layout-right.php
layout-both.php

Then on the index page you setup if layout X is chosen, load X layout. This is an example using the option tree plugin theme options:

<?php get_header(); ?>

<?php if( get_option_tree( 'mz_layout' ) == 'right') { ?>
    <?php get_template_part( 'layout', 'right' ); ?>
<?php } else if( get_option_tree( 'mz_layout' ) == 'two') { ?>
    <?php get_template_part( 'layout', 'two' ); ?>
<?php } else if( get_option_tree( 'mz_layout' ) == 'left') { ?>
    <?php get_template_part( 'layout', 'left' ); }?>

<?php get_footer(); ?>

I’m sure there are other methods, but this should give you an idea.