An instance is defined as the processes and memory which needs to be available on the database server in order to make the data accessible. When one starts a database, they are really starting the instance. The act of starting the instance starts a number of processes on the server and allocates memory for the database instance. When the instance is shut down, the database remains in the files.
A session corresponds to one or more users interacting with the instance. When a user starts a new database session, a process is started on the server and the user's application interacts with this process (called a dedicated server process) which interacts with the instance.