A rollback segment hold the data that was changed and is used by the server to ensure that others looking at the same data have a consistant view of the data until you commit it.
The redo is a log of events that happen on the system and is written to before the dbwr (database writer) writes the changes to the datafiles. It also ensures that if the database crashes, on startup, it can roll forward any changes that were written to the redo log but not already written to the datafiles.
Probably does a lot more, but that is the jist of things.