They all mean /to learn/, which is different than /to study/.
>>> premessa <<<
as in other small differences, don't forget that the context always
wins over the word!
So if you want to use for instance, /mancanza/ in the context
of /assenza/, the word will get the meaning of /assenza/,
as the context always overcomes the subtle differences in
very similar meanings and will squeeze the word in the wrong
corner.
Usually we use /apprendere/ in the context of learning a behavior,
something that comes from tradition, like being able to make bread (fornaio),
what we call 'un mestiere'.
We usually say /imparare/ for single tasks, like:
-- avete imparato tutti la divisione dei polinomi ?
Nesuno dice no ? Allora passiamo al capitolo successivo.
or something mostly related to cognitive capacities:
-- dopo anni di studio ha imparato cosi` bene il Cinese che
adesso fa l'interprete Italiano Cinese.
Esempio (apprendere)
-- il saper vivere si apprende solo vivendo
Qui si tratta di tanti diversi compiti, esperienze e conoscenze, e -- secondo me --
il verbo apprendere e` piu` adatto, ma puoi benissimo usare /imparare/.