Я б начал с VDS.
Которую можно без проблем увеличить по мере необходимости.
Если, точно знаете, сколько чего будет, то конечно лучше выделенный сервер.
Насчет размещение своего железа.
У вас сломается процессор или жесткий диск, как вы в кратчайшие сроки все восстановите и за сколько? Если ответ Не знаю и больше 2-х часов, то этот вариант не подойдет.
Делаем 2 картинки, одна фоновая, другая hover, при наведении меняем на hover.
Верстаем блоками по этажам.
Пример блок 1 этаж:
background нужные координаты картинки, при hover меняем background-url со светом
Основная проблема: большой html, который долго генерируется на сервере.
Второй этап объединяем CSS и JS
Третий этап JS грузим ассихронно.
Четвертый этап сначала грузим нужные картинки. Потом уже остальные.
Нормально это сделать, через JavaScript и local storage.
При раскрытие записывайте, что меню раскрыто в переменную в local storage, затем при загрузки страницы проверяйте, есть ли в ней что-то если есть, то делайте раскрытой.
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").