Maintenance mode is for preventing any users other than administrators from using the site while maintenance is taking place, though it's not designed to prevent user access during version upgrades.
When users attempt to access a course when your site is in maintenance mode, they obtain a message informing them that the site is in maintenance mode. If you wish, you can create a customized maintenance mode message, perhaps stating when the site will be available again or giving the reason for doing maintenance.
Note: The front page of your site will appear as normal when your site is in maintenance mode. Users will only see the maintenance mode message when they attempt to access a course.
Setting maintenance mode
An administrator can put the site into maintenance mode in Administration > Site administration > Server > Maintenance mode.
When a site is in maintenance mode, the link "In Maintenance Mode" is displayed near the top right of each page (except the front page) for admins.
If your session finished while still in Mainenance mode, you can re-login by typing the login URL directly (http://yoursitename/login/)
CLI maintenance mode
Admins can enable CLI maintenance mode by adding file from the command line
$CFG->dataroot/climaintenance.html. The difference from the standard maintenance mode is that all web access is prevented, CLI scripts continue to work (with the exception of admin/cli/cron.php). This CLI maintenance mode is used often during CLI version upgrades.
It's possible using the admin/cli/maintenance.php mode to schedule the CLI maintenance mode and then to display a message to users warning them when the site will become unavailable. See MDL-37596
See also the section on maintenance mode in Administration via command line.