Like many other aspects of the latest update, Core Location has been shaken up, with changes designed both to enable developers to build new kinds of things they couldn't before and to help maintain user privacy. Specifically, iOS 8 brings three major sets of changes to the Core Location framework: more granular permissions, indoor positioning, and visit monitoring.
Before iOS 8, when an iPhone scans for nearby Wi-Fi, it transmits its unique MAC address as part of the search. Watching for MAC addresses is one of the techniques that is used to locate devices in retail settings.
A new change in iOS 8 makes it so that when a phone is scanning for nearby Wi-Fi access points, it will use a random MAC address rather than announcing the device's permanent address.
This is a huge win from a privacy perspective, since it is no longer possible to passively track devices by their MAC addresses as they wander around a store. Most articles are touting this as Apple "striking an unexpected blow against location tracking," or "stopping marketers from spying on you."
However there is another explanation for this change, and one that makes more sense from a business perspective.
By disabling the ability for third-party companies to track devices using the MAC address, this ensures the only way to track devices indoors is by using iBeacon technology.
So while this is a positive change from a privacy perspective, really it's just a way to ensure mobile marketing firms are required to use Apple's iBeacon technology and are further locked into Apple's ecosystem.
Since the launch of iOS 7, your iPhone has been collecting a list of "frequent locations" as you move around. If you don't already know about this, you can check out your list in the Settings app.
Navigate to Settings → Privacy → Location Services → System Services → Frequent Locations.
Below are some screenshots from the data collected by my phone.
The phone builds up a list of cities you've visited, and clicking on one reveals a list of all the places you've visited within that city. It was able to show my "Home" and "Work" locations by name even though I've never entered the addresses. There are a few other named locations, like the Portland Airport in my case. The reverse-geocoded addresses are certainly not exact. Clicking on any of these places shows a list of all the times I've visited those locations in the past, including the time I arrived and left!
When this launched in iOS 7 the fall, I was somewhat surprised that there was no mention of it in the developer API docs. I would have expected a corresponding update to the CoreLocation APIs to make this data accessible to apps. It looks as though iOS 8 will make this available to developers now!
In addition to location services being able to get data from GPS or region monitoring, CoreLocation will be able to send location updates to apps after the user has "visited" a location. The new "CLVisit" event may include an arrival date and departure date in addition to the location.
This along with the changes so that CLLocation may include a CLFloor object indicating what level of a building someone is on opens up a lot of possibilities for new apps!