Dask schedules tasks across processes and across nodes, so it is appropriate for use on a single computer, supercomputer, or cloud. Dask also provides specialized data structures to aid in this.
Multiprocessing manages tasks only within a single computer. It may be easier to use than Dask for some tasks, but is less flexible and less scalable. If you're using Dask, you probably don't want multiprocessing. The two will interfere with each other.
Numba is a just-in-time compiler for Python that can provide significant acceleration to code. If most of your work is in Numpy, this is not likely to offer much advantage because Numpy is already highly-optimized. If you're using Python for loops or other high-level, interpreted language features to do the bulk of your computation, then Numba is good for you.
joblib has a lot of overlap with Dask, though you might benefit from its memoization features if you use a lot of recursion.
PyOpenCL offloads array computation to a GPU. This can probably be used in conjunction with Dask and Numba; however, you likely have only one GPU per machine so using PyOpenCL indiscriminately will create contention for that GPU and, essentially, limit you to only a few processes per node.