How to get custom user meta by id in custom Gutenberg block

Unfortunately, this is not documented at all. It took a while for me to get the answer by inspecting the code, and it is:

in browser console you can test at first:

wp.data.select('core').getUser(1,{context:'view'}) 

where 1 is ID of the user.
You can also omit context, to get all meta data available from REST, or give context: 'edit'.

This gives you pretty detailed object as “answer” whose properties are metadata.
If you need just certain fields, you can specify this (read REST manual, Global parameters):

wp.data.select('core').getUser(1,{'_fields':'first_name,last_name'}) 

From this, it is easy to refactor this to familiar form used in blocks:

import { useSelect } from '@wordpress/data';

function Edit() {
const USER_ID = 1;
const user_email = useSelect(select => select('core').getUser(USER_ID, '_fields': 'email'));

//some other code
}

When trying to find solution to such questions, you can always use getEntityRecord, all others such selectors are just shortcuts to this general selector. You should inspect WP REST API Handbook and you will find your answer. Here is link to users section

When you try to find or understand some more specific but undocumented selector, you should look in Gutenberg’s core-data package, selectors.ts or entities.js which dynamically injects selectors. getUser selector is constructed from member of array rootEntitiesConfig line 104 in the code (name: user) and it gets get prefix in function getMethodName later in code.