Qual é a diferença entre as seções require e require-dev no composer.json?

Estou começando a usar o compositor, sei muito pouco sobre isso e tenho um pouco de experiência com o desenvolvimento de aplicativos da web.

Eu apenas caminho atravésNettuts + Tutorial, então eu tenho uma pergunta básica sobre o compositor.

{
  "require": {
    "laravel/framework": "4.0.*",
    "way/generators": "dev-master",
    "twitter/bootstrap": "dev-master",
    "conarwelsh/mustache-l4": "dev-master"
  },
  "require-dev": {
    "phpunit/phpunit": "3.7.*",
    "mockery/mockery": "0.7.*"
  },
  "autoload": {
    "classmap": [
      "app/commands",
      "app/controllers",
      "app/models",
      "app/database/migrations",
      "app/database/seeds",
      "app/tests/TestCase.php"
    ]
  },
  "scripts": {
    "post-update-cmd": "php artisan optimize"
  },
  "minimum-stability": "dev"
}
O que aparecer na parte "require-dev", só será baixado e instalado comcompositor instalar --dev?Eu li algumas das documentações do compositor, mas ainda não entendi qual é a razão pela qual temos a parte "require-dev"? É por causa de nós queremos ser específicosversão do pacote sempre obtendo a última versão estável?