1. At first, "идти" (to go) and "ходить" (to go around, to walk) are different verbs. It is like a difference between "ехать" (to go [using a ground transport]) and "ездить" (to go around [using a ground transport], to travel) we discussed previously. "Буду ходить" means "I will go here and there" (a repetative/continuous action), but you mentioned a specific time point ("tomorrow"), so, any form of the repetitive verb "ходить" is unsuitable here, and "идти" should be used in its perfective aspect (since it is one-time decision or intention, like a perfect tense in English) which is "пойду" for "I will go".
2. Both variants are correct. "Вчера я ПОШЛА ("идти" = "to go") в ресторан" only desctibes the initial moment of your action (you left your home and went to the restraunt, and you basically have not described any further details). Вчера я ХОДИЛА ("ходить" = "to go around", a continuous/repetative action) в ресторан" describes the process, like "I was going to the restraunt yesterday". And you describe a larger piece of your action, not just your initial part of the trip (which was the first case). And if you say "Вчера я СХОДИЛА (c- for perfect time) в ресторан", it would mean you reached it and came back (the whole process).
3. It is in the prepositional case. BUT, this question is VERY GOOD! Thanks for asking. The thing is, some linguists and programmers have actually found a HIDDEN CASE in Russian, which is a LOCATIVE CASE (МЕСТНЫЙ ПАДЕЖ). The thing is, despite "сад" in "в саду" is OFFICIALLY in a prepositional case, native Russians never use a prepositional case's postfix for "сад" for "in [a/the] garden". I mean, we NEVER say "в садЕ" (only "в садУ"), but in prepositional case, the "-Е" postfix should be used (llke, "[to talk] about garden" = "[говорить] о садЕ"). So, actually it is in the LOCATIVE CASE (WHERE? "в саду", "в лесу"), not in PREPOSITIONAL case ("о саде", "о лесе"). And NO Russian textbook I have EVER seen says ANYTHING about this case!