How to create an archive page (with links) for a date range?

The WordPress wp_get_archives() function makes this really easy.

At the bare minimum, you can specify the type and the limit and it will return a collection of posts within that range.