Мне кажется лучше создать отдельные классы для валидации данных(Helper...) и вызывать их в контроллере. По сути такие классы также являются моделями с какой-то стороны. Контроллер не должен сам работать с данными.
Как мне кажется, лучше сделать какой-то специфичный адрес. Это будет дополнительная защита от дураков. Чтобы найти админку, которая будет доступна по другому адресу(не admin), нужно произвести какие-то действия, некоторых это, возможно, отпугнет.
www.codecademy.com
Сервис для изучения языков программирования(веб). Мне нравится, я по нему Python изучаю. Там как раз практические уроки, которые нужно выполнять, все довольно удобно.