Regarding to the performances, should I check if a post has a thumbnail before or after checking if is the front page (or single page, etc.)?

Neither, they are just as fast as each other, both are using information that has already been fetched in advance. This is micro-optimising.

Functions such as is_front_page or is_singular etc etc are just looking up variables already set in the main query object.

Likewise functions such as has_post_thumbnail etc are looking up data that has already been fetched. WordPress will try to fetch things in advance, and most functions you call are already cached, or rely on pre-fetched data. For example when WordPress fetches a post, it also fetches its post meta and terms in bulk to save time and improve performance. This is why get_post_meta calls don’t add database queries on most pages (because the data is already fetched and stored in WP_Cache).

If you want to make your site faster, you should not be looking at things like this, and you should be measuring performance timings. If you took measurements you would see no measurable difference. Unless you have proof this is slowing down your site, performance isn’t a consideration for this code.

Normally the differences for code like this are so tiny when contributing to performance that they’ll be drowned out by mundane things such as the temperature of the RAM and other minute things that aren’t worth thinking about.