Is querying wpdb directly and skipping actions provided by WP’s core “wp_update_post” a good idea?

The idea of directly modifying the database using $wpdb is not what you should worry about, it’s what wp_update_post() does that you should be considering. This function internally uses the $wpdb to update the post, and if you know what you’re doing, then do it.

But…

Many plugins can hook into the actions that are triggered once this function is used.

For example, cache plugins decide whether to clear the cache of the archive or not, once the post’s status has been change to draft, which should no longer be shown in the archive.

So if you are sure there’s nothing hooked into that function, and nothing ever will ( which is odd ), then you can use SQL to do so.

Other factors can be taken into consideration too, such as in case of rare changes being applied to database structures ( well, we just had the WYSIWYG editor replace with Gutenberg so quickly, so this might happen too ). In case of such event, the built-in functions will be updated automatically, while your code won’t and will most likely cause issues.