Can you select a post as the front page or only pages?

No, you cannot. Static front pages needs a page template to be set. You have a couple of choices here to do what you want

  • Create a page you would want select as static front page. You can then add your custom content in the same way you would do for a post in the page editor backend. You can then simply use the default loop to display your content as normal. You should check out Static Front Pages for a complete usage case of how static front pages work

  • Create a page template and then substitute the default loop with a custom query. This custom query will then pull in a specific post/set of posts according to your needs. Check out WP_Query ond check out how to create a custom query and all the available parameters which you can use to construct your custom query

  • Replicate the build in sticky posts behavior and then use this to set your own custom sticky post and then pulling that in to your static front page

This is just a few ideas that would make sense. Just a note, pre_get_posts does not work as expected on static front pages. so you would need to use a custom query here to show custom content