What’s wrong with my $wpdb query?

When you use $wpdb->prepare the placeholder %s is replaced with something between quotes, so, your query becomes:

"SELECT * FROM 'wp_users' WHERE ID = 1"

but table names in SQL queries must not be wrapped in quotes. So, the right way is:

$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->users} WHERE ID = %d", 1 );
$results = $wpdb->get_results($sql);

Note that this may not work because nothing assure that exists an user with the id = 1. (Actually someone discourages to have user with ID = 1 for security reason).

If you want to pick first user is better to use something like:

$user = $wpdb->get_row( "SELECT * FROM {$wpdb->users} ORDER BY ID ASC LIMIT 1" );

In this way you get first user row, no matter what its ID is.