熟語 is, in a broader sense, everything that is a compound word, especially which has opaque (not predictable from each part) meaning among them. However, it most often refers to any type of multi-kanji compound, such as: 熟語 (itself 二字熟語) or 弱肉強食 (四字熟語).
慣用句 is a set phrase, especially those with opaque meaning, such as: 足を洗う ("wash one's feet", but figuratively, to retire from bad deeds, where English would use "wash one's hands")
故事成語 is an imported idiom that has reference (故事) to the Chinese classics, most of which are 熟語. For example, 四面楚歌 is from this story in the chronicles, and 矛盾 from a passage from Han Feizi.
ことわざ is a type of 慣用句 that I think best translated proverb, a figurative expression which usually conveys some folk wisdom. What I typically imagine from this word is those which can stand as a full sentence in the form. For example, 猿も木から落ちる "even monkeys fall from trees" or "even Homer sometimes nods".
成句 and 言い習わし don't have a good definition in my opinion. 成句 can be a bookish alternative for either 熟語, 慣用句, or ことわざ in my definitions, and 言い習わし is a verbal noun out of 言い習わす "say customarily/traditionally", which means what it does.
So, 朝飯前 would fall under 熟語; 二階から目薬 and 馬の耳に念仏 are 慣用句 as well as ことわざ; 雲泥の差 is both 慣用句 and 故事成語 (and maybe 熟語).