Concurrent and Parallel Haskell are Glasgow extensions to Haskell which let you structure your program as a group of independent `threads'.
Concurrent and Parallel Haskell have very different purposes.
Concurrent Haskell is for applications which have an inherent structure of interacting, concurrent tasks (i.e. `threads'). Threads in such programs may be required. For example, if a concurrent thread has been spawned to handle a mouse click, it isn't optional -- the user wants something done!
A Concurrent Haskell program implies multiple `threads' running within a single Unix process on a single processor.
Simon Peyton Jones and Sigbjorn Finne have a paper available, "Concurrent Haskell: preliminary version." (draft available via `ftp' from `ftp.dcs.gla.ac.uk/pub/glasgow-fp/drafts').
Parallel Haskell is about speed -- spawning threads onto multiple processors so that your program will run faster. The `threads' are always advisory -- if the runtime system thinks it can get the job done more quickly by sequential execution, then fine.
A Parallel Haskell program implies multiple processes running on multiple processors, under a PVM (Parallel Virtual Machine) framework.
Parallel Haskell was first released with GHC 0.26; it is more about "research fun" than about "speed." That will change. There is no paper about Parallel Haskell. That will change, too.
Some details about Concurrent and Parallel Haskell follow.