1) Many routers let you reserve an IP based on MAC address. I've used this facility on a Netgear router on an Espruino/ESP8266 project of my own.
2) WebSockets if you can connect directly to the ESP8266 over LAN, MQTT if you need to be remote/WAN and don't want to open your firewall to your home network.
3) ESP8266 Espruino build has facility to save WIFI credentials independently of your sketch/code. Check out the documentation.
Edit: If you can't assign an IP based on Mac address go with MQTT. This negates the issue of a dynamically changing IP address, lets you use remotely without firewall compromise (which is often unsafe DMZ), and is great for two way communication.