Эти слова - почти синонимы. Но есть некоторые различия.
Слово "застенчивый" применяется только по отношению к общению с людьми.
Если эти два слова применяются к общению человека с окружающими людьми, то разницы нет никакой. Как робкий, так и застенчивый человек испытывает чувство стыда и смущения, например, от того, что ему нужно с кем-то заговорить, появиться на публике, выступить с речью и т.д.
В то же время слово "робкий" является также синонимом для слова "трусливый". И это качество может проявляться не только при общении с людьми, а и, например, при выполнении каких-либо рискованных действий.
Таким образом, человек может быть застенчивым в общении с людьми, но вовсе не быть робким при выполнении прыжка с парашютом. А может не быть застенчивым при ухаживании за женщинами, но быть робким, когда к его девушке пристанут хулиганы.
Ну, в общем где-то так...
P.S. Спасибо за интересный вопрос, Анилсам! Ох и вопросики бывают от изучающих русский язык - вспотеешь пока найдёшь ответ!.. Раньше я и не задумывался, насколько наш язык сложный и разнообразный :) . Восхищаюсь теми, кто смог его выучить!