So, for the block validity question: that's done programmatically. Yes, PoS votes get the final say if a block is valid or not. This isn't something that someone running the node has to actually make a decision on for every single block. There is logic which can be defined such that if certain preconditions for a block are met, you as the PoS miner will "choose" not to include it. Also, I'm pretty sure you still get a vote reward even if the block doesn't become part of the main chain (someone correct me if I'm wrong).
OK. But if it's done programmatically and the rules are the same for all nodes, shouldn't they all always vote the same? I mean all 5 (I think it's 5 per block) voters would be expected to have yes or no on the block. Is it possible to have a split decision, like 3 to 2 votes? If yes, how is that possible unless the voters follow different rules?
If your ticket is called on a block and that block gets orphaned, you lose the reward (as the block is simply not in the chain). The ticket gets refunded of course. I recently noticed it happen on my local staking wallet, unless I misinterpreted what I saw.
I assume that blocks rejected due to PoS voting become orphan.
The important thing to note: the code is open source. The scenario would be something like: user pulls down the source, makes some edits that would allow them to do (x,y,z), and then they build that code and run it on their node. Now their consensus rules might be different from the typical user: thus other voters might decide to not include transactions broadcasted by that "bad actor" node in the blockchain.
Otherwise, yes, the assumption is, all nodes come to the same consensus on the validity of a given block. That's only the "rule" though, there could be exceptions. Generally in the blockchain world, "consensus" means >50% of the nodes agree on the validity of a given block.
I'm pretty sure you get PoS reward as long as your ticket is called to vote. Whether or not the block is valid is a separate matter. This already happens in Ethereum, for instance. Orphaned blocks (Uncles) pay out a smaller block reward to the miner that solved the block, but they still pay out.