I'm not a teacher. I just want to give my opinion. ^^
Everyone has their own way to learn English as well as any other languages, it depends on your personality to follow a way to learn English effectively.
It's better to learn English actively. I mean try to use all words you have learned before from anywhere in your life as much as possible. In my point of view, I never try to learn words by heart because I'm really lazy :P and I still forget them easily if I don't use them often.
About a good dictionary, I myself don't use dictionary too much so I really don't know exactly which one is good. However, I think a good dictionary is one that has clear phonetic symbols after each word which will help you a lot in pronunciation, and along with definitions it should have some examples about how to use those words.
Hope that can help. Bye bye ^^
Student or Learner