Complex networks have, in recent years, brought many innovative impacts to large-scale systems. However, great challenges also come forth due to distinct complex situations and imperative requirements in human life nowadays. This paper attempts to present an overview of recent progress of synchronization of complex dynamical networks and its applications. We focus on robustness of synchronization, controllability and observability of complex networks and synchronization of multiplex networks. Then, we review several applications of synchronization in complex networks, especially in neuroscience and power grids. The present limitations are summarized and future trends are explored and tentatively highlighted.