In GRANDPA there are two phases of voting per round: prevote and precommit. On a very high-level the first phase of voting will inform other participants on what they "expect" to finalize and it will, in some sense, limit what can be voted on to finalize in the next phase (precommit). As such, the actual finalization of blocks happens after the precommit phase is over. When a round concludes, a commit message is gossiped that includes all the precommits in the given round that justify a given block being finalized. This commit message is what is included as part of a GRANDPA justification, but additionally it may contain extra block headers that might be needed to verify the commit (since voters might have voted for forks that eventually get orphaned and those blocks might no longer be available on the network).
Yes, the precommit votes are included as part of a justification. It exists in the justification field associated with a given block and not on the block itself.
A validator will always verify any justification that comes attached with a block for its validity. Additionally, it will make sure that all blocks that change the authority set (end of session/era) include a finality justification. The node will only enact GRANDPA authority set changes when the block that triggered it is finalized.
It is important to take into account that due to the way GRANDPA works not all blocks are guaranteed to have a justification. Instead, the only blocks that must have a justification are the blocks changing authorities.