Concurrency refers to things happening in some unspecified order. Multitasking - executing multiple programs by interleaving instructions via time slicing - is an good way to think about this sense of concurrency.

Concurrency is by definition multi-threading; but multi-threading is not necessarily concurrent.

Concurrency is basically the use of threads to attempt multiple tasks simultaneously, for example, you are modifying a database, while updating a GUI. etc. Threads are a specific example of concurrency.

Here's a visual example. Threads on a non-threaded machine:

        -- -- --
     / \
>---- -- -- -- -- ---->>
Threads on a threaded machine:

    / \
The dashes represent executed code. As you can see, they both split up and execute separately, but the threaded machine can execute several separate pieces at once.