The Loop isn’t working

The problem is not that the loop is not working. The problem is your code is not executing the loop the way you want it to.

PHP does not do what you mean. It does exactly what you tell it to do. Like most computer languages, it is just an extremely fast and incredibly dumb list processor.

When you removed the query_posts() call you needed to replace it with something else that tells PHP what you want. PHP doesn’t just “know” anything.

Here is one solution. At the bottom of your template file, replace this:

<!-- START footer -->
<?php get_footer(); ?>

With this:

<!-- START footer -->
<?php

get_footer();

add_action( 'pre_get_posts', 'wpse_112282_change_query' );

function wpse_112282_change_query( $query ) {

    if ( $query->is_main_query() ) {

        $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;

        $query->set( 'post_type', 'post' );
        $query->set( 'post_status', 'publish' );
        $query->set( 'paged', $paged );

    }
}

This uses one recommended way to get the value of the $paged and follows the rest of the query you used in the query_posts() call. The first argument in query_set() is the value in your query that is to the right of the equal sign (=).

For example, post_status=publish becomes:

$query->set( 'post_status', 'publish' );

Read more about using the 'pre_get_posts' action.