See session as the main concept. It is identified by the session_id, and it exists as long as the user is logged in. There are also sessions which are internal to the engine. This include system procedure and Service Broker activiation.
There is only a row in sys.dm_exec_requests when there is something actually executing in the session. In most cases you only have one request per session executing at the same time. The one exception is when MARS (Multiple Active Results Sets) is enabled for the session (this is set in the connection string). In that case there can be more than one request per session at the same time.
When it comes to sys.dm_exec_connections there is one row per session that logged in from the outside of SQL Server. For this reason, there are fewer rows in this DMV than there are in sys.dm_exec_session. Again, MARS, muddles the picture a little: when MARS is enabled, there can be multiple rows for the same session in sys.dm_exec_connections.