```python
def region_totals(grid: list, queries: list) -> list:
    if not grid or not all(grid[0]) or any(len(row) != len(grid[0]) for row in grid):
        raise ValueError("Invalid grid dimensions")
    if not all(isinstance(cell, int) for row in grid for cell in row):
        raise ValueError("Grid contains non-integer values")
    if not all(isinstance(query, list) and len(query) == 4 for query in queries):
        raise ValueError("Invalid query format")
    if any(not (0 <= q[0] < q[2] <= len(grid)) or not (0 <= q[1] < q[3] <= len(grid[0])) for q in queries):
        raise ValueError("Query out of grid bounds")

    rows = len(grid)
    cols = len(grid[0])
    prefix_sum = [[0] * (cols + 1) for _ in range(rows + 1)]

    for i in range(1, rows + 1):
        for j in range(1, cols + 1):
            prefix_sum[i][j] = grid[i-1][j-1] + prefix_sum[i-1][j] + prefix_sum[i][j-1] - prefix_sum[i-1][j-1]

    return [prefix_sum[q[2]][q[3]] - prefix_sum[q[2]][q[1]] - prefix_sum[q[0]][q[3]] + prefix_sum[q[0]][q[1]] for q in queries]
```