Hey there, Session Variables are specific to that instance of the Process and they can be viewed and modified from Control Room. If two instances of the same process are running at the same time, they will both have the same Session Variables but the Session Variables will have different values.
While, Environment Variables are used mainly for variables which you know will be changed in future (like URL, email id's etc). They can be defined in system manager tab and to use them you need to set the data item name exactly as the environment variable name and set the exposure to environment. It will pick up the value from environment variable.
Session Variables differs from Environment Variables in the sense that changing an environment variable after a process has started will result in the process using the old value of the environment. Environment Variables are available to all processes and objects but a session variable is only available to that running process instance and values get updated on the go.