Single attachment page on kirby?

You can use a route together with a template that outputs your image:

Your route catches all urls that end in a number, e.g. www.domain.com/projects/project-a/1 and then loads a template called image.php:

c::set('routes', array(
    array(
        'pattern' => '(:all)/(:num)',
        'action'  => function($uri, $num) {
          tpl::load(kirby()->roots()->templates() . DS . 'image.php', array('uri' => $uri, 'num' => $num),false);
        }
    )
));

In your image.php template you display the image:

<?php 
$page = page($uri);
$image = $page->images()->nth($num);
?>
<img src="<?php echo $image->url(); ?>">

Edit: This is just a basic example. It only works in a permanent way if the number of images or their position does not change. Otherwise you would have to use a meta file for each image that contains a fixed number and you would have to find the image by that meta number.