When I typically update DNS ("A" records) I will allow for an extended period of time for the changes to propagate throughout the root nameservers.
Do I need to make this same allowance for updates and changes to CNAME records?
No you don't because DNS records don't propagate. What you do need to allow for is for any cached records to expire, based on the TTL of the record in question.
If this is a new record, no caching can have occurred so the new record should be available and should resolve immediately.
Additionally, the root servers (first level; .) don't host DNS zones or records for any third level domain names. The root servers know which name servers are responsible for the gTLD zones (second level; .com, .edu, etc.), which in turn know which name servers are responsible for your zone (third level; yourcompany), which in turn hold a copy of your zone file. No other DNS server holds a copy of your zone file or DNS records other than your name servers.
[Edit - It appears I misread the question]
There are two ways in which your zone data 'propagates'. And the root servers are not (directly) involved. They allow other computers to find your servers, and hence your zone data. But it's other systems that check the root and tld servers before they get down to yours.
Here's how your data does propagate.
First, you push that data to your authoritative servers, and some of those may use (incremental) zone transfer to update each other. This may take up to the
REFRESH time of the zone to complete.
Second, each record in your zone, and that includes anything, including
CNAME records, may be cached anywhere between your authoritative servers and any clients.
How long that data is cached should depend on the record's individual
TTL (time to live). Theoretically, it should not take longer than the sum of the zone refresh and the record's ttl for a cached entry to time out. However, there's a lot of different software out there. Google for
dns ttl bugs - last count I did was around 850k.
But you can have CNAME records for www.example.com point to something like
www-server.dynamic.example.com, and set the TTL and refresh times for stuff inside
dynamic.example.com to much lower values than the parent. This allows operators
to quickly redirect traffic to other infrastructure when the need arises.