Там нет особой разницы. А в современном русском языке практически вообще нет разницы.
Употребляйте и то и другое, в любых ситуациях и когда хотите.
Я спросила маму (она учитель русского и она мне объяснила, постараюсь Вам объяснить).
<em>Опять</em> - повторить что-то еще раз. Повторить то, что до этого делал. Повторение старого.
Примеры:
Ты прийдешь ко мне опять? (ты ко мне постоянно ходишь и я задаю тебе этот вопрос)
Ах, опять эти уроки! (я делаю их очень много, каждый день)
Дай мне тебя опять обнять. (мы только что обнимались, и я опять сейчас тебя обниму)
<em>Снова</em> - начать что-то заново. Там общий корень, видите? Это от слова "НОВЫЙ" (new).
"Снова" также употребляется, когда что-то происходит через большой промежуток времени.
Примеры:
Я снова пойду работать в эту компанию. (я там долго не работал и решил пойти снова туда работать)
Мне снова предложили заняться этой научной работой. (я долгое время не занимался этой научной работой и решил возобновить это занятие)
Я снова беременна. (беременность у меня произошла заново, то есть снова. Каждый ребенок и каждая беременность - это каждый раз новое событие и происходит оно заново)
Также могу сказать, что "опять" более простое слово, более "просторечное".
У нас в русском языке есть идиомы, типа:
1. Например, когда кто-то говорит: "Ты опять ешь эту дрянь!" На это другой человек отвечает: "<em>Не опять, а снова</em>." :) (это русская шутка)
2. Когда что-то повторяется много раз говорят "Опять двадцать пять". Пример, я пришла домой, а моя кошка <em>опять</em> (она это делала много, много, много раз и делает это постоянно) разбила вазу. И я говорю, - "Ну вот, опять двадцать пять".
It's quite difficult to explain it.
Nigel, if you did not understand ask again.
If you don't understand smth in Russian, please, ask me, I'll try to explain and translate it.