Python implementation of Conway's Game of life with Pygame
In your generate function, numpy.random.randint can do everything you need. I'd suggest renaming the function to generate_grid and just returning the generated grid.
In your display and check functions, the grid parameter knows its own size - you don't need to pass that in.
In display, your alive and dead colors could be in a tuple. Then you could index the tuple by [0] or [1] (the value of the cell) to determine the color:

rect = pygame.Rect(x*block_size, y*block_size, block_size, block_size)

rects.append(pygame.draw.rect(window, Colors[grid[x][y]], rect)

Pretty much everything with a dot (.) or an expression should be cached inside display.

pgrect = pygame.Rect
rappend = rects.append
drawrect = pygame.draw.rect

Your x/y loop can be replaced using np.apply_over_axes
The scipy.signal.convolve2d function will do most of the heavy lifting for you in terms of neighbor counting &amp;c