Whenever a software developer releases the code for testing after bug fixes or feature enhancement, it becomes the responsibility of the tester to test the application thoroughly to find defects.
Generally what could happen is that if the developer worked on a particular feature then they unknowingly could have created bugs in other features of the application because in any software application many features are integrated to each other hence the code change in one feature could inject defects in other integrated features. To handle this challenge the concept called regression testing is introduced.
Regression testing means to test all the features of the application not just that one feature that has been worked upon by the developer. In other words regression testing is not to test just the bugs that have been fixed upon by the developer but to test the whole application. Regression testing is the best way to find defects that could have been introduced in features other than the ones whose code has been changed. And it is the most common scenario because generally in real time it happens that other features also get affected when one feature has been updated by the developer.
But in times when deadline is very near hence very little time is left for testing the application then it is a good idea to just retest those bugs that have been fixed by the developer instead of performing exploratory testing in other features of the application. Retesting is not a very good idea because defects could remain in the application but it is an alternate to regression testing in situations where time is the constraint. Retesting is also a good idea if the features of the application are not at all integrated to each other and there is no way that code change in one feature could affect the code in other features of the application.