You would typically use ASHX to return non-HTML content, dynamically generated content and the like.
Here's an image handler example here on CP:
A Simple Image Handler[
^]
Here's a ton of samples from Google:
Handlers[
^]
You could use it for redirection, but with routing now free in ASP.NET there's no point in reinventing the wheel.
Cheers.