1) Препятствий бесконечно и всех их не перечислить, начиная от багов в стандартных библиотеках, заканчивая недостатком опыта.
2) Маркетолог раскручивает, в основном банерная реклама, реклама в других приложениях, работает вроде неплохо. В зависимости от направленности приложения может хорошо сработать вирусная реклама, любимая история по теме:
habrahabr.ru/post/173405
3) Stackoverflow, книжки, внимательно следить за актуальностью знаний. Обе sdk быстро развиваются и меняются реализации, даже казалось бы базовых вещей. Экспериментировать, задавать вопросы и еще раз экспериментировать, без практики и набивания шишек прочитаные книжки/просмотренные лекции ничего не стоят.
4) Картинки рисовал дизайнер в компании, в целом не было особых проблем то же нарисовать в фш самому. Дизайн важен, так как людям не связанным с программированием без разницы где вы храните данные, какие вы патерны используете, как вы красиво все распараллелили, но зато точно заметят небольшой косячок в UI. На самом деле есть куча примеров, когда приложение простейшее в реализации, но интерфейс очень красивый/оригинальный, и потому оно очень популярно.