I believe that one would "retest" an item that had previously failed, while one would perform a successful test on an item again to be sure that it didn't "regress". In other words, regression testing is to confirm that something previously OK'd hasn't been broken.
Regress - Go to a former state, as applied to software QA go down in funtionality.
ReTest - Is obviously to redo a test, The reason for which may not necessarily be to test if the functionality has gone down. You could be retesting the AUT for several other reasons. Like incorrect baselines used, errors in scripts or testcases, incorrect builds used for testing, or machine blows up during testing [img]images/icons/wink.gif[/img]
Retest means the Object which once tested with functionality have to retest with same functionality or can say that with all the same routine.(In the most of the time these cases are fail in first phase and updated the bug so have to concetrate on previous bug)
In a case of regression test the same old object came with new functionality or new features and that new features does not effect the orignal functinality of the objects (Which the tester has to consider in regression testing).
Retesting is repeating the testing effort of an application functionality irrespective of any changes made or applied to that functionality.
Regression testing is the testing effort conducted on an application functionality or the application after some changes have been introduced to it or any application modules by which the application under test is getting affected. This test is conducted to see that the by introducing the changes in the application, some additional errors or defects have not been injected or crept into the application. Normally the same functional test cases with diffrent set of test data and some additional test cases are used to conduct regression testing.