Synchronization of Weakly Coupled Oscillators: Coupling, Delay and Topology