Some agile team use them to communicate with the customer when he can expect to have a new version of the software (even if that version is incomplete). This allow the customer to plan the migration to the new version, before it is released.
For example, for a software developped in an agile way and released every 6 month, the following could be the milestones.
Alpha 1 - December 19th
The first set of feature arriving, usually buggy. This is useful for trying them out and giving feedback
Alpha 2 – January 23rd
Next set of features, plus some fixes for the feedback in Alpha
Beta 1 – February 27th
All the feature for the current version are there, and no one will be added until the final release. New development will be in the next version. You can still suggest some small tweak to existing one though.
Final Beta – March 27th
The behavior of the feature is completely frozen, unless a critical flaw is found. Only bug will be fixed.
Release Candidate – April 10th
The final version to be released. No bug are supposed to be found here. If some are found, a new release candidate is created.
Final Release - April 17th
The supported version is released to the general public, since no bug have been found the release candidate
(Note : I didn't follow exactly the ubuntu semantic here)
With that release plan in hand, a customer can plan ahead. If a new feature is really expected, he can test it during the alpha stage to ensure that it fit what is required. Programmers can start experimenting with the new feature during the beta stage. Regression testing can start during the release candidate stage.
Knowing when the software will be released and what will it contain is hugely important for a lot of user. Using milestone, you can know what is going to happen and when. The agile mindset is still there, manifested by the fact that before a certain date the feature set is variable. This is unlike the waterfall way, where you plan both the features and the release date. And of course the next version isn't set, again unlike the waterfall method.
So to answer your question : In agile, milestone are used to indicate when important decision and action are going to be taken, even if those actions and decision themselves can change.