Using Advanced Custom Fields to create a per page slider

For what you want to achieve you do not need a loop at all. Both page 1 and 2 display all images because you query all pages on your site, then take all the images from each ‘slider_image’ ACF field and put them into the foreach loop.

When you get values from any field it will by default takes the values for the current page, so there is no need for you to pass any additional ID as that is the default behaviour.

If I understand correctly what you need is the basic loop that can be found in the documentation https://www.advancedcustomfields.com/resources/gallery/

<?php 

$images = get_field('slider_image');

if( $images ): ?>
  <div id="featured" class="flexslider clearfix">
    <ul class="slides">
        <?php foreach( $images as $image ): ?>
            <li>
                     <img src="https://wordpress.stackexchange.com/questions/236285/<?php echo $image["url']; ?>" width="https://wordpress.stackexchange.com/questions/236285/<?php echo $image["width']; ?>" height="https://wordpress.stackexchange.com/questions/236285/<?php echo $image["height']; ?>" alt="https://wordpress.stackexchange.com/questions/236285/<?php echo $image["alt']; ?>" />
            </li>
        <?php endforeach; ?>
    </ul>
  </div>
<?php endif; ?>

The part if( $images ): checks whether $images contains any values. If not, then nothing within that if will display on the page. Put the into the if also, so you don’t have empty divs on the page.

EDIT: Just saw the comment regarding the hook. Then you would have to add a variable to get the ID for the current page get_the_ID and pass that ID into the get_field as the second argument. That should ensure that you always get the current page and the rest should work as described above.