Retesting is done to check whether the build or changes provided by the developer for a particular defect is fixed properly or not.Also tester check only the particular affected test case.It is manually done.
Regression testing is done after Retesting is done.It check whether the changes from the developer affect the previous module or code,also say side effects of change done by the developer.Here both the previous test cases are also tested with the affected test case.It is a long process so it could s done with help of automation.
Retesting means testing the fixed bug to make sure whether it is working properly or not......Regression testing means - testing the unchanged futures to make sure that it is not broken because of the changes made.
Regression Testing used to have its own definition. If you are willing to conduct software testing for some software to to uncover the faults and bugs it used to have it is regression testing or you can name it regression as well.
Retesting - It can be a word which can be used to retest all the bugs which has been fixed during debugging face, so there are no more pending.