You are mistakenly thinking that the checkbox you see is the actual input element but the actual input element is hidden to make way for the replacement checkbox svg image (which is contained within the label). Therefore the label contains both the visual checkbox and the text within the same flexbox item which means it moves as a whole unit.
If you removed the svg and made the actual input visible then you would see that the space between is working.
Unfortunately it would be a flawed concept as far as flexbox is concerned because the items would not be aligned in rows as flexbox is not a grid spec. That means that £199 on the right would take up more space than the £99 above it and thus the text would not align in a vertical row because it is centred between the checkbox and the price.
If I were you I would do this instead which aligns the checkbox and label to text to the left and the price to the right and looks much neater.
It doesn’t look like that to me but remember the svg is not subject to any flex alignment properties. You would need to verticallycenter the svg via other means.