Nowadays, satellite technologies are developing very fast, including the production of small, low cost satellites. This is propelling an important increase in the number of satellite mission planning and operations and the need for intelligent scheduling systems to automatically and optimally handle such mission planning, i.e., the assignment of tasks to space missions through ground station services. Central to satellite mission planning is the satellite scheduling problem, whose resolution is the basis for an optimised allocation of user requests for efficient communication between operations teams at ground and spacecraft systems. The aim of this paper is to survey the state of the art in the satellite scheduling problem, analyse its most significant mathematical formulations, seen as a family of time window scheduling problems, as well as examining its multi-objective nature. We particularly stress the computational complexity of the problem, its highly constrained features and the conflicting objectives due to windows accessibility and visibility clashes caused by requirements of different missions to be scheduled. In view of the computationally hardness to solve to optimality, the resolution of the problem is addressed through heuristics and meta-heuristics methods, namely, local search and population-based methods. While, for validating and evaluating the performance of resolution methods, a simulation toolkit in the literature, called STK, is used. Finally, we consider some optimisation problems arising in spacecraft design, operation and satellite deployment systems.