With respect to session, there is little difference between the two.
In general, they are very different. requestDispatcher.forward takes place on the server, within one request cycle. The client (browser) has no idea that this has taken place.
response.sendRedirect works by sending a 302 header (along with a Location header), suggesting that the browser make a brand new request.