Prepositions are determined by a number of factors, and more often than not there are no hard and fast rules to follow.
I agree with the other answer that (a) through (g) are all perfectly fine sentences and (h) is awkward. That is because you should use the preposition "at" when you talk about a booking/reservation at a location and "for" when you talk about the time or service. You make a booking/reservation for a room/table or for 7 pm/Monday/next week and the booking is at a hotel/restaurant. Sometimes "for" works with locations too but "at" doesn't work with the time of a reservation. To sum, these all work just fine:
I will book a table for 7pm at the Ritz.
I will make a reservation for a table at the Ritz
But here is where things get interesting/complicated, depending on how you view it. When the temporal prepositional phrase doesn't immediately follow the main verb phrase ("book a table" or "make a reservation") but occurs later as part of a larger phrase, you can possibly use "at" instead of "for". And in a lot of cases you can't use "for" and have to use "at". Thus your (i) sounds fine.
And when you replace "I will book a table" with "I have a reservation" or "I have made a reservation", or "I have booked a table" things will become clearer and "at" will sound much less jarring, because in that case the temporal modifier describing the booking becomes the only option.
I will make a reservation for a table at the Ritz for/at 7p.m. ("for" is preferred)
I have a reservation for a table for/at 7p.m. at the Ritz. ("for" is preferred)
I have a reservation at that hotel for Monday/September 2. ("on" would sound strange)
I have a reservation at/for 7pm to use this room. ("for" is preferred)
I have a reservation to use this room at 7pm. ("for" doesn't work here)
By the same token, let's see what happens if we substitute "I (will) have a table" for "I will book a table"
I have a table at/for 7pm.
"for" is slightly better, but "at" works. Let's say you arrive at a restaurant at around 6:20pm. You know you are early but you'd still like to check with a waiter to see if they can seat you. You go up to a waiter and say, "I have a table at 7, but could you find a table for me now?"
I have a table at 7.
If you don't say "pm", you'd have to use "at" because "for 7" will be understood to mean " a reservation for 7 people".
As I have explained the two options above work fine, but the most common way is still "I have a reservation for 7pm." or "I have a 7pm reservation."
I will have a table at 7pm.
This would be applicable in a situation like this: you ask a friend to make a reservation on your behalf at a restaurant, and you tell your friend, "Make sure I will have a table at 7pm." which means you expect to be able to sit down at a table at that time.
Here is a brief grammatical analysis of the sentences at issue. In general, "at 7 p.m." is an adverbial and a temporal adjunct. As an adjunct without it the sentence still stands as a well-form, complete, meaningful sentence. As an adverbial/temporal adjunct it modifies the sentence or part of the sentence and could be moved to several possible places in the sentence, because temporal adjuncts enjoy a great deal of latitude in terms of placement, word order, form, and punctuation.
For example, I can say any of these sentences and it would mean pretty much the same, with different emphases:
Around 5 in the afternoon, I went to the park with friends.
I went to the park with friends around 5 in the afternoon.
In the afternoon I went to the park with friends, around 5.
In the afternoon, (pause) around 5, I went to the park.
In all of these sentences the temporal adjunct modifies the action described by the main verb (go to the park).
In the case of (h), you have "at 7" following "a table" and it grates because words such as table and reservation don't license "at + time". They license for + time/service and at + location. But its proximity to the verb phrase "book a table" which calls for a temporal modifier of its own leads to confusion and upsets the usual interpretation. If you move it to the front "At 7pm I will book a table" the meaning is disambiguated and the jarringness disappears.
When the sentence semantically changes, for example "will book a table" becomes "have a booking/reservation" the reading that the temporal adjunct describes the action becomes invalid and some preposition choices are less likely to cause confusion or jarring-sounding sentences.