Dinner has been made. (intentional)
(I) made dinner (so I can eat it).
They seem quite the same. Btw what are some cases in which -てあった are used? I can't recreate one.
Dinner has been made (and it is still there untouched.)
Someone made dinner some time ago (so that I/someone could eat it later on).
The difference in meaning between the two sentences would depend heavily on the current situation of the meal that one made.
Sentence #1, even without any further context, would always mean that the meal (or at least the speaker's portion) is still there uneaten and available as the speaker utters the sentence. This is because of the use of 「～～ってある」. "Dinner was made and it is still there." The temporal point of reference is NOW.
Sentence #2 without any further context, however, leaves one unsure of what has happened to the dinner that was made. Someone may already have eaten it or it may still be there untouched. The temporal point of reference is in the PAST.
Thus, the two sentences would describe practically the same situation only on the condition that the dinner in question is still there.
Moving on to 「～～てあった」...
"Dinner had been made." (You found that situation some time ago.)
The temporal point of reference is in the past. For instance, you could say "When I got home from school yesterday, dinner had already been made." The meal was there ready to eat. Once again, the sentence says nothing about whether or not you actually ate it.
～ておく is used for doing something in advance, so one doesn't have to do it later
～てある simply describes the state of something already having been done
Dinner is ready.
I already prepared dinner (in advance) [so that we wouldn't have to make dinner now].
The difference in meaning is I think the emphasis of ～ておく on the fact that something was done as a preliminary measure / pre-emptively / in advance.
There is also an important difference in grammar: In the first sentence 晩ご飯 is the subject; in the second sentence 晩ご飯 is the object and the subject is missing (and only implied by the context).
According to "A Dictionary of Basic Japanese Grammar", page76:
ある: Something has been done to something, and the resultant state of that action remains.
It has been told to John already.
Drinks have already been bought.
The window is open.
おく: do something in advance for future convenience.
話しておく: talk in advance.
食べておく: eat something in advance.
Verbて+ある: represents a state.
Verbて+おく: represents an action.