In order to have efficient CDN, it needs to direct requests to the server nearest to the requester.
How do they do that? Do they run their own DNS server that, when asked to resolve an address, it the geo lookup of the requester IP and returns the proper server IP? Does DNS caching affect that (sounds like it shouldn't, and my ISP's cache is going to cache the nearest server and then serve it to me)
There are two basic mechanisms to route requests to topologically proximate servers:
Split-view DNS… like you said.
Anycast routing: BGP is used to tell an ISP's router to route traffic for an IP address to an optimally located host.
Of the two techniques, split-view DNS is simpler to implement. However, anycast routing has the advantage that it works even if the client is using a DNS server other than the ISP's.
Yes, that's exactly how most CDNs work. In addition, many have servers that are co-located in ISPs' datacenters for direct access.