In short, a regression test is used to check that changes made to the software, website or mobile application, such as the addition of a new feature or an update, have not impacted previously existing functionality.
Let's take the example of a bicycle: if the wheel is changed, a regression test would consist of checking that, despite the wheel change, the brakes still work (but there's no need to check that the bicycle pump still hooks up properly).
What's the difference between regression testing and non-regression testing? Actually, there isn't any. They're exactly the same thing. We use both terms. The ISTQB, for example, prefers the term regression test.