Display custom post type from template

If you want to use the proper archive page (e.g. example.com/events), make sure that you register your custom post type with 'has_archive' => true and then create an archive-events.php in your theme (changing events to whatever you’ve named your CPT).

To show just the latest post, put the following before you call your loop stuff:

global $query_string;
query_posts( $query_string . '&posts_per_page=1' );

If you just want to redirect to that latest one, which seems less elegant, try putting the above right at the beginning, starting the loop, and then use PHP header() to redirect, probably using 302 as the reason. Be sure that there is no output (even empty lines outside of PHP code) before you call header(). Also be sure to have some kind of fallback in case there is no matching post for the query.