The difference is called the "scope". If you put a variable in a request, it will disappear when the request is over. If you put a variable in a user session, it will disappear when the session is over.
When do you use one, rather than the other ? It depends on what you want to do. You may need a variable only in a jsp file, so you would put it in the request. You may also need to keep the user information, where it can be accessed anywhere, so you would put it in the session.