「お昼ごはん食べた?」 と聞く場合は、現在の状態(食べた or 食べていない)に注目しているから現在完了形を使います。
Have you had lunch?
お昼ごはん食べた?
一方で、過去のある時点で起きたことに注目する場合は過去形を使います。 過去形を使う場合は、いつの時点のことを聞いているのかを示す言葉(yesterday など)を後ろに付けるか、文脈でいつのことか分かるようにします。
What did you have lunch yesterday?
昨日のお昼ごはん何食べた?
でも、例外はいくつもあります。 例えば、「私のメール受け取った?」と聞きたいときは、
Did you receive my email?
で OK(フォーマルな場合もこれで OK)。 さらに固く言うなら、
Have you received my email?
と言っても OK。 過去形と現在完了のどちらを使うべきかは、結局のところは慣れってことですね。