Знать на отлично, в моём понимание это когда при написание проекта не обращаешся к какмим либо источникам, чтобы вспомнить или посмотреть ту или иную функцию и т.п.
Можно вызубрить синтаксис языка и все функции, но так и не научиться программировать. Судя по постановке вопроса ты неверно расставил приоритеты при изучении программирования.
не совсем правильное понимание. зубрить все функции не вариант, сейчас редкий проект обходится без фреймворков, родными функциями пользуются все реже и реже. достаточно знать что может и что не может пых, а там уже и подсмотреть в ман можно. p.s. автодополнение кода в большинстве IDE кагбе намекает. и дело тут не в лени.
дополню #18 пост Qwazar'a. А также параллельно с чтением практиковаться, много практиковаться. желательно на более менее реальных небольших задачах. одной теорией сыт не будешь - прочитал что-то и сразу накодь примерчег для себя. а еще лучше если устроишься где-нибудь на полставки, руку быстро набьешь, а потом можно уже и за серьёзное браться=)