Должен ли я запоминать это все?
Гугл в помощь, как говорится, программист - это человек, который умеет гуглить. Всё помнить невозможно. Если часто пишешь и используешь, знания откладываются. Если давно чем-то не занимался, иногда забываются даже тривиальные вещи.
нет - это не школа, где надо заучивать стих. Но надо это было "суметь" хотябы 1 раз. Когда 1 раз что-то осваиваешь, то второй раз ты уже "вспоминаешь", а этот процесс как правило в разы быстрее. 
 А для того, чтобы еще больше вспоминать, то я лично запоминаю определенные детали:
1) Ты уже делал вещь "х" в проэкте "х" 
2) В Проекте х ведешь блокнотик с комментами, мини документацией для тебя или же в самых нижних строках пишешь примеры.  
- (approximate solution) - тоже очень хорошее решение, но я лично слишком ленив для такого, чтобы тратить на это столько времени)))
3) Когда ты в следующий раз будешь делать какие-либо вещи, то все что тебе надо вспомнить - это то, что ты делал их уже в том проекте "х", открываешь свои комменты и делаешь копи-пейст + адаптацию. 

Если все резюмировать - вещи, которые ты используешь разово, ты ну никак не запомнишь и не зазубришь. Просто записывай их и запоминай не как они делаются, а где они лежат. Это вопрос организации, а не зубрежки.