I have brewed the same recipe 4 times. All 4 brews had 1.028-1.030 pre-boil gravity but today when I finished my mash I had 1.025. Any reasons that happen? And what impact will it have on my beer?
I'd consider that within a reasonable margin of error. It will hardly affect your beer in a noticeable way. I wouldn't worry about it at all. In any case, that's pre boil. If you just boil a bit longer, you'll have slightly less beer but you'll be able to hit your intended OG.
As to why it happened, there are any number of reasons for a minor thing like that. Slight mis measurement of volumes or weights, slight difference in crush, different lots of malt. Keep in mind that unless the malt comes from the same lot every time, there could be minor differences in potential extract.