If you want to determine whether a player is in check I think you would:
1.1) determine every legal move of the opposition;
1.2.) determine whether such a move threatens our king (i.e. could 'take' the king)
To determine 1.1) above you need to:
2.1.) consider every active piece of the opposition and its possible moves;
2.2.) see whether that move conforms to a valid type of move (i.e. moves likes a castle,knight etc)
2.3.) confirm that such a move doesn't place the opposition in check (otherwise it's not a valid move)
Yet 2.3 requires us to go back to 1.1-in order to determine whether the opposition's move is not check (and thus valid) we need to consider all the possible moves of our side (the side which we wanted to determine if it was in check originally).
It seems that this leads to some horrible circular dependency. Obviously, it doesn't as otherwise chess wouldn't be a game!
Where am I going wrong?