Question Regarding Proper Failover to Asynch Server in Availability Group
On our cut over day we are going to failover our Primary to SQL03 so we can run our system in the New Datacenter 


Before you do this, change the synchronization type to be synchronous and let the secondary catch up. Then, when the secondary is synchronized you can failover without issue.

Should you failover while the replica is still set to be asynchronous it will not guarantee that the databases in the AGs are all caught up to the same time. Additionally it'll cause you more issues as all database replicas will have their data movement suspended.


  Should I remove SQL01 and SQL02 from the availability group first then re-add them once I bring them online at the new location?


If it were me, I would. Even though driving them there doesn't "sound" like it's very far away - who knows what else will happen. When you remove the replicas the databases will go back into a restoring state so it should be fairly easy to add them back in.


  Secondly How will this work with my voting seeing I currently have 4 vote and will be going down to 2?


If you're using Windows Server 2012+ then dynamic quorum will be enabled by default. If you shut the servers down one by one in a controlled fashion then dynamic quorum will kick in and automatically readjust the votes. You won't have to do anything.

Additionally if you're using Windows Server 2012R2+ dynamic witness will also be on by default, thus giving or taking away witness votes as needed. Again, because you're doing this in a controlled fashion there shouldn't need to be any extra involvement or customization for the short period of time.