```python
from typing import List, Dict, Any

def pick_fields(records: List[Dict[str, Any]], fields: List[str]) -> List[List[Any]]:
    if not isinstance(records, list) or not all(isinstance(record, dict) for record in records):
        raise ValueError("records must be a non-empty list of dictionaries")
    
    if not isinstance(fields, list) or not fields:
        raise ValueError("fields must be a non-empty list of strings")
    
    result = []
    for record in records:
        if not isinstance(record, dict):
            raise ValueError(f"record {record} is not a dictionary")
        
        row = [None] * len(fields)
        for field in fields:
            stem, marker = field.rsplit('?', 1) if '?' in field else (field, '')
            if stem == '':
                raise ValueError(f"name '{field}' has an empty stem")
            
            if stem not in record:
                if marker != '?':
                    raise ValueError(f"record {record} is missing required field '{stem}'")
                row[fields.index(field)] = None
            else:
                value = record[stem]
                if marker == '?' and isinstance(value, list):
                    value = value[0]  # Pick the first element of a list
                row[fields.index(field)] = value
        
        result.append(row)
    
    return result
```