What is the difference between научиться and выучить? I understand that they both mean "to learn" but are they used in different contexts?
+ noun in Dative/verb in infinitive - to acquire a skill (a set of skills)
+ Accusative - to learn by heart, to memorize
Я научился игре / играть на гитаре - I've learned (how) to play guitar
Я выучил названия аккордов - I've learned the names of chords
There's also the verb выучиться which is basically synonymous to научиться but implies greater effort invested or difficulty experienced, something in the vein of
to manage to learn.
And обучиться (reminded of by Alex_ander in the comment below) which is another synonym with a tendency to connect with nouns rather than with infinitives and having a tinge of thoroughness to its meaning.
On the other end there's the verb изучить as a synonym of выучить but indicating a more thorough/exhaustive result or a process.
Still in contrast to изучить, выучить is a bit deficient with respect to imperfective aspect and the present tense as it's almost never used in the corresponding forms, i.e. выучивал/выучиваю/буду выучивать.