Hi Rafael. The difference is subtle. I'll try to explain.
You _often_ say "снова" when:
- it is formal, written speech.
Демонстранты снова выдвинули требования.
- it's routine process and/or when changes are positive :
После каникул дети снова пойдут в школу
После перерыва стадион был открыт снова
После ремонта завод снова открыли
Закончив коледж, он снова пошел учиться, уже в университет.
- We talk about intention:
Я хочу снова съездить в Москву
Он хочеть снова увидеть тебя
You _often_ say "опять" when:
- Something negative, bad or unpleasant has happened more then once (we accuse):
Ты опять не выучил уроки?
Ты опять опоздал?
Ты опять прогулял школу?
Он опять пропустил гол!
Ты опять затеял драку?
Compare above examples with following where we use "снова", because a situation is not considered as bad or negative, it is positive or at least neutral:
Я снова получил хорошую отметку
( Но - я опять получил двойку )
Он снова забил гол!
Они придут к нам в гости снова. Мы всегда рады их видеть. ( "Они опять к нам пришли. Они ужасно скучные!")
- Something has happened again, but as a random, rare event:
Счастливчик, он опять выйрал в лоторею!
Another hint that "снова" has connotation of something has been happening many times, while we use "опять" for just more "then once" situation but not necessarily has been happening very often ( maybe just second time ).
Они снова поехали в отпуск, они делают так уже много лет, из года в год. The focus on continuous, probably long process, rather than on certain event.
Они опять уехали в Москву, они были в Москве месяц назад. The focus on the certain event, rather than on continuous process.
However _in many other cases_ "опять/снова" are interchangeable. Like I said the difference is subtle, the rule of thumb is "снова" for positive and "опять" for negative. Another piece of advice I can give you - it worth to learn how to use опять/снова with other words to get a context clearly. Words draw words (: