Basically there will be 2D array of 'squares' that represents the play area, and a 'block' which is the falling bit (made up from a number of squares in a certain arrangement)
collision checking (to work out whether the block has reached the squares at the bottom/sides) will simply involve looking ahead to the position it plans to move to and seeing if anything is already there in the play area.
when the block reaches the bottom, the squares from it will be added to the play area..
then all the rows of the play area will be checked to see if any have been completely filled, at which point they will be removed and any rows above will be moved down.
this will continue until the play area gets filled up to the top row, or the level is completed.
Thats pretty much it! very straightforward.