wp_enqueue_style on template_redirect level?

The reason to use wp_enqueue_style is to allow WordPress to manage dependencies between stylesheets. Since you’re only outputting a barebones page here, there really is no point to use it.

That said, if you look at the hook order, you see that template_redirect is actually called quite late in the process, just before the scripts and styles are enqueued, but before wp_head. As you can see in the list of default filters/actions (and as you found out) the scripts and styles are only printed at the wp_head stage, with this line of code:

add_action( 'wp_head', 'wp_print_styles', 8 );

So, if you want to enqueue a file at the template_redirect stage you will have to cheat by running both the enqueueing and printing process early. That is not too difficult, though, because WordPress has already been fully loaded at this stage. All functions are available, including the styles class. In stead of your line <link rel = ... > you could execute the styles chain of command early, like this:

wp_styles (); // initialize the styles object
wp_enqueue_style ('my_handle', 'path-to-file'); // make the file ready for printing
wp_print_styles (); // print the enqueued style

I didn’t test this, because it doesn’t really make sense, but I hope you get the point.