Concorrência é uma propriedade da semântica da linguagem, relacionada (de um jeito complicado) a não-determinismo. Para alguns domínios ela é uma propriedade necessária. Por exemplo é impossível fazer um servidor de rede que atenda a mais de um usuário ao mesmo tempo sem concorrência.
Existem modelos de programação onde a concorrência é usada não só para atender aos requisitos de domínio, mas é um mecanismo de abstração fundamental. Atores é um exemplo desse modelo.
Paralelismo é uma propriedade do modelo de custo de uma linguagem/sistema, onde o custo para fazer uma operação é uma função do número de CPUs. Paralelismo não deve afetar a semântica de um programa, só a performance.
Resumindo, concorrência é quando a sua linguagem permite fazer "mais de uma coisa ao mesmo tempo" e paralelismo é quando a linguagem consegue fazer alguma coisa mais rápido com N unidades de processamento (CPUs/cores) do que com uma.
Dá para ter paralelismo sem concorrência (por exemplo processadores com SIMD) e dá para ter concorrência sem paralelismo (por exemplo em máquinas com uma unidade de processamento só e um sistema/linguagem multitarefa onde slots de computação são distribuídos por um scheduler).
Mas é muito comum implementar paralelismo usando um substrato concorrente (é o que a biblioteca de parallel collections de Scala faz, por exemplo). Além disso, existem modelos de concorrência que distribuem as tarefas entre várias CPUs, o que é o caso dos Actors de Scala e do Akka, aí você pode fazer o seu programa concorrente e esperar um ganho de performance pelo paralelismo do sistema.