Is block height always sequential? Is block height always sequential? Can it serve as a 100% reliable block counter in case if I want to check whether I missed a block or I need to account for any corner cases?
Block height is by definition sequential in the sense that adjacent blocks will always have heights that differ by 1.  But there is a chicken-and-egg problem: in order to compute the height, you have to have access to all the blocks in between the genesis block and the current one.  (The height is not recorded in the block itself.)

There's also the issue that multiple blocks can have the same height, if they are on different branches of the chain.  So just because you have one block at every height, doesn't mean you have all the blocks on the main chain; some of them might be on orphan branches.