A concurrent application is an application for which computations logically execute simultaneously due to the semantics of the application. The problem is fundamentally concurrent, i.e., it is built into the problem definition. The primary goal of using concurrency is not to gain performance, but rather because that is the simplest and most direct way to write the program.
A parallel application is an application for which computations actually execute simultaneously in order to complete a problem in less time. The problem doesn’t inherently require parallelism, it can be stated sequentially. Parallelism means running a program on multiple processors, with the goal of improving performance. Ideally, this should be done invisibly, and with no semantic changes.