Какой из вариантов правильный? Или правильны оба? Но тогда какой и когда употреблять?
Ответ простой – правильны оба варианта, но в реальной жизни употребляется только один из них:
Who do you love? – Кого ты любишь?
Вообще, грамматически верным является вариант с whom, но по факту так давно уже никто не говорит.
Дополнительные примеры из повседневной жизни:
Who are you talking about? – О ком ты говоришь?
Who would you like to invite tomorrow? – Кого ты хотела бы пригласить завтра?
Who should we explain that to? – Кому нам это объяснить?
Во всех этих примерах вместо who грамматически верным было бы употребить форму whom, но, повторимся, в повседневной речи вместо whom все давно уже говорят who.
Разговорный язык развивается по своим собственным правилам, и загонять его в узкие рамки грамматики бессмысленно.
Но whom ещё можно употреблять в официально-деловом стиле, например:
To whom are we supposed to explain this rule? – Кому мы должны объяснить это правило? (formal)
Итак, в обычной речи говорим who, в официально-деловом стиле, в частности в официальных документах, – whom.