Для всех точек PHP будет работать прекрасно. Для включений верхнего и нижнего колонтитулов у вас может быть одна страница, которая принимает переменную GET целевой страницы (например, «home», «calendar», «news» ...). В зависимости от того, какую переменную GET вы получаете, вы можете включать разные страницы.
if($_GET['page']=="home"){
include(inc/home.php);
}
Если вы не хотите отображать уродливые переменные GET в URL, вы можете использовать их с некоторой магией apache! (Google 'маскировка URL' или 'перенаправление Apache' должны помочь)
Что касается остальных ваших требований, то у PHP есть преимущество в виде небольшой кривой обучения и большого количества доступной документации (как онлайн, так и вне ее). Сочетание PHP и MySQL должно быть достаточно для того, что вам нужно. Большинство веб-хостов предлагают это.