Основное различие в том, что метафора (перенос значения слова или выражения к другому предмету по общему признаку) может быть расшифрована и понятна даже без словаря, если её значение для человека не является знакомым. По крайней мере, носителем языка метафора будет интуитивно распознана.
Море проблем. Горящие глаза. Лес рук.
Идиома же - это целостное словосочетание, разложив которое на составляющие, понять его значение без пояснения или словаря — нельзя, так как значение взятых отдельно слов, самого словосочетания в буквальном смысле, абсолютно не соответствует значению, которое в него вкладывается. Особенно хорошо, на мой взгляд, это заметно на китайских идиомах.
Русские: Собаку съел. Денег куры не клюют. Играть первую скрипку.
Китайские: Осел исчерпал свои возможности. Сон жёлтого проса. Пририсовать змее ноги.
Английские: В тумане (in a fog). Кусок пирога (a piece of the pie). Взломать банк (break the bank).