This rake task is meant to be used maily in development and testing environment.
Let's say you are working on your migration, generated a first version and realized that you want to modify your DB schema still a little more. Since you didn't commit your code, you probably don't want to create yet another migration. So you edit your latest migration file.
But how do you get your db to be in sync with the migrations files? rake db:reset uses the schema.rb file, so you can't do that.
This is when rake db:redo becomes super useful. rake db:redo simply rollbacks your database one step (or whatever amount of step you passed to the task using the STEP constant) and migrate up your database.
This might not be always working since migrating down might not work. That's why I have another patch to add rake migrations:reset.