Is there a conditional tag for latest post or do i need a query?

Within an ordinary WordPress Loop, the following would identify the first post in the Loop, which would be the latest if posts are ordered by date descending.

global $wp_query; // might not be necessary; depends on context
if (is_paged() && 0 === $wp_query->current_post) {
  echo 'first-post';
}

I don’t know how your custom function works as you didn’t post any code and I don’t how genesis_hook works as I don’t use Genesis, but hopefully that will help.