I think you may be overcomplicating matters. The general rule is to let Blocs do as much of the work for you as possible. Firstly, there is no need to create your images with borders, rounded corners or margins. Simply use a normal rectangular image with no embellishments of any sort. If you look at your current page, you will see that the images look pixelated around the border. Letting blocs add the border will remove this pixelation and make the whole thing look a lot sharper.
You will leave blocs to create the white space between the images, and you will have blocks apply the rounded corners and border. To do this, add a two column bloc to the page and remove the bloc padding - set it to none. Then place a two column bric into each of the placeholders. Next, add an image bric into each of the 4 placeholders. You will notice that each columns is separated by a gutter (I thinks it’s about 20px per gutter) this is the white space you need. Now add your rectangle images into the placeholders and set the properties as shown below.
IMPORTANT: do not resize the images - if they are of different sizes or aspect ratios, change them to be all the same size and aspect ratio in an external image editor.
Your images should now be evenly spaced with rounded corners - like so:
Next, you are going to create a custom class to create the coloured border and to add a top margin of 20px. In my example, I’ve created a custom class named imagelinks. The screenshots below show the setting for the class - select one of the images before creating the class.
Now apply this class to all the other images. What you should see is this:
All evenly spaced with white gutters of 20px each. When you preview in the smallest breakpoint, it should look like this:
My guess is that the reason you may be getting images that run off the screen is that you may have resized them within blocs - try to avoid this at all costs. Doing so will cause all sorts of problems - leave blocs to handle the responsiveness.