Есть ли разница SELECT * FROM `bd` WHERE `id` = '$id' и SELECT * FROM `bd` с поиском через цикл?
Брать из таблицы все данные, чтобы найти нужное значение циклом - это плохой подход.
А если записей будет миллион, представляете, сколько времени займёт передача данных из БД и переборка их в цикле. Я уже не говорю про потребеление памяти.
Посмотрите примеры подготавливаемых запросов например здесь
Да, есть разница. Первый запрос будет быстрее и эффективнее, так как он использует индексирование для быстрого поиска записи по идентификатору. Второй запрос будет медленнее, так как он будет проходить циклом по всем записям в базе данных, чтобы найти нужную запись.