Why is an empty result an error? ( $wpdb->get_row )

There isn’t an error. The square brackets are empty– aka “no error”. Put a spurious comma in the SQL and you will see what I mean.

But your SQL is wildly complicated for you are doing. That is entirely equivalent to

SELECT * FROM $table ORDER BY id DESC LIMIT 1

Though, I notice you are using id rather than ID and I don’t remember any Core tables using the lowercase version. If this is meant for a Core table that will be a problem.