To point a domain to a server, you use an A record, regardless of where your DNS is hosted.
NS records define where you go to look for that A record. You can of course use any DNS service you wish -- your registrar's, your web host's, or even a completely independent third party. The matter of the IP changing is moot -- no matter where you host the DNS, you have to update the A record to point to the new IP, period. (That said, unless you change hosts it's very unlikely you'll ever have your IP changed -- in the 15 years I've been hosting websites, the only times my IPs have ever changed is when I changed hosts or otherwise initiated the change myself (e.g. changing the IP of a VPS).)
Using a CNAME just means that you're delegating the final result to a different A record. There's no real need for this, and in fact it will slow down access to your site somewhat because every single client will have to do at least 2 DNS lookups (one for your domain, one for the target of your CNAME); in practice no one is likely to notice this, but it also means that any issues with that third-party DNS now impact you as well. Also note that this approach is only possible when hosting with a service that provides such a CNAME! All hosting providers function with A records in your DNS, only a few will function with a CNAME instead. (Note: Using a CNAME to point to another record in your own DNS zone (e.g. using a www.example.com CNAME to reference an example.com A record) suffers neither of these issues and usually is the preferred means of setting up DNS aliases.)