Как установить и настроить домашний сервер?
1) Почему не взять отдельный слабенький десктоп и из него сделать сервер?
2) Для хостинга сайтов ставите apache, nginx или что вы еще хотите.
3) Для mail-сервера что нагуглите, на ваш вкус (их много).
4) Для FTP та же история, ставите хоть ProFTPD, хоть что другое.
5) Для удаленного рабочего стола в зависимости от ОС выбираете нужный протокол и используйте (обычно с коробки уже всё есть)
6) VirtualBox и на нее окна
7) С wifi нужно будет повозиться - можете почитать статьи в интернете.Если кого не затруднит, как можно более подробнее опишите пожалуйста, я понимаю что в гугле много всего можна почитать, но как это все вместе связать и чтобы заработало я пока не понимаю
Вы сначала начните ставить по статьям. Вот когда не будет что-то получаться, тогда и пишите сюда. А так - это ответ, который не вложится в быстрый.
Как сказал ghaiklor, лучше спрашивайте маленькие вопросы. А слепится все должно при небольшом понимании что собственно вы делаете. Так что читая статьи еще и думаете над каждой операцией которую вы совершаете: зачем, почему, а что если... 
Еще добавлю к ответам, что для доступа извне важно настроить роутер. Просто наличие внешнего айпи вам ни чего не даст. Нужна настройка статики в локальной сети, проброс порта на вашу тачку, желательно QoS. Про все эти моменты разжевано тут:  Настройка роутера для домашнего хостинга. Если все ваши сервисы (фтп, рабочий стол... ) нужны вам со всего интернета, то пробросить нужно не только 80ый порт а и другие. Кстати по безопасности - большую часть защиты автоматически берет на себя роутер. Так что при изначально правильных настройках дыры у вас могут появится лишь в тех местах куда проброшены порты. То есть чем больше сервисов - тем больше возможных дыр, и каждый сервис нужно изучать на создание защиты отдельно. Если говорить про апач то сам по себе он достаточно защищенный, но нужно позаботится от возможности заливки всяких веб-шелов, выполнения sql-инъекций и прочего.