They are related but not exactly the same.
- 잘 생각하다 - 1) give something a good thought (to make the best decision), 2) try to remember something.
- 곰곰이 생각하다 - Ponder something taking time and weighing all aspects in one's mind. (sounds informal)
- 신중히 생각하다 - Take something seriously and give it a lot of thoughts with a cautious attitude. (formal)
They are often used with the helper verb 보다, which can change the meaning and nuance somewhat.
잘 생각하다 is often used with decision making, because one of 잘's meanings is "for the best outcome".
- 잘 생각해 봐 = Think hard to see what's best for you.
- 잘 생각했어 or (그건) 잘 생각한 거야 (Yeah, that's probably the right thing/path for you).
곰곰이 and 신중히 describe the attitude and manner. 곰곰이 stresses considering the details one after another, and 신중히 emphasizes being cautious about an important matter.