bgp log-neighbor-changes
This command simply causes a message to displayed to the console or in the event log that a status has changed with one of your established BGP neighbors. This is very useful for an administrator to know.
no synchronization
This can be considered a legacy command now, because in modern IOS the “no synchronization” is on by default. The explanation of this is a bit long. Your best bet is to review the synchronization lesson.
In a nutshell, the purpose for Synchronization rule was back when many internal routers didn’t have the CPU and RAM capable of running BGP. If you have a BGP router advertising a network, but the less powerful routers inside your network don’t know about the route being advertised, if traffic needs to cross your internal network, it would be dropped. The Synchronization rule would only allow BGP to advertise a network if that network was already known by an internal routing protocol (like RIP, OSPF, EIGRP, etc). The idea was that if the route is known by an IGP, you wouldn’t act like a “black hole” for the traffic.
Most modern routers can easily run BGP now (so long as they don’t get the full Internet table!), so the idea of a “Synchronization Rule” is outdated.
--Andrew