* If you store IP addresses ensure that you can store IPv6 address if necessary.
* Rent servers only from IPv6 capable providers.
* When configuring DNS don't forget AAAA records.
* If you ban users by IP you might need to ban entire IPv6 subnets.
Except you might want to actually configure IPv6 on any backend servers you run and add IPv6 DNS records so that your client software can actually use IPv6.
If you write low level sockets you at least need to be aware of both when you connect the sockets. The easiest is a server as you just need to listen for connections on two sockets. When connecting you should be aware of cases where it seems like either protocol will work, but in fact one is broken (generally this means the local machine supports ipv6 but the network is not connected - it is common to ignore this, but you will get support requests because of it unless you implement a try both scheme). Either way once communication is established there is no real difference in the code.
The above is the common case. If you need to do more than communicate it can get complex quickly. In general I wouldn't use raw sockets unless you actually need to do something complex enough that no existing wrapper will work for you (performance alone is reason to use raw sockets if you have profile data to prove it). However since I don't know your domain I cannot suggest how complex your code will need to be to support both.