How to show 3 most recent/viewed posts in a special tiles on home page using wordpress?

First, don’t use query_posts(). Just don’t:

It should be noted that using this to replace the main query on a page
can increase page loading times, in worst case scenarios more than
doubling the amount of work needed or more
. While easy to use, the
function is also prone to confusion and problems later on. See the
note further below on caveats for details.

http://codex.wordpress.org/Function_Reference/query_posts (emphasis mine)

And It causes all kinds of havoc with globals on the page that you then have to correct. Use a new WP_Query object.

Second, you don’t have a loop, meaning there is nothing in your code that iterates over the query results.

query_posts("post_per_page=3"); the_post(); ?>
  ...
<?php wp_reset_query(); 

The $post variable will be set to the first post returned by the query, but there is nothing in there to loop through to other posts.

$qry = new WP_Query("post_per_page=3");
if ($qry->have_posts()) {
  while ($qry->have_posts) { // this is your loop
    $qry->the_post(); // sets $post to the current post in the Loop ?>
      <div class="tile'.$qry->current_post.'">
            <img class="post-image" src="https://wordpress.stackexchange.com/questions/114179/<?php echo get_post_meta($post->ID,"post_image', true) ?>"/>
            <div class="tile-datebox">
                <img src="https://wordpress.stackexchange.com/questions/114179/<?php echo get_post_meta($post->ID,"post_icon', true) ?>" >
                <p><?php the_time('F jS, Y') ?></p>
                <div class="tile-info"><h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1></div>
            </div>
      </div> <?php

  }
} 
wp_reset_postdata();

Untested but that should be very close.

I should add that the code above will duplicate what you appeared to be trying to achieve in your code. However, your title reads “How to show 3 most recent/viewed posts in a special tiles on home page using wordpress?”. All that your code does is pull the most recently published posts, not the most recently viewed ones. WordPress does not track page view counts, as far as I know. You will need a plugin or a whole different block of code to do that.