Two modes, kept separate
Source mode compares lines exactly, including comments and key order. Semantic mode parses both sides, matches objects by group, kind, namespace and name, and compares values. Containers, ports, env vars and volumes are matched by name rather than position.
Nothing is ignored by default. Ignoring status, server-generated metadata or the last-applied annotation are explicit options, so a change never disappears without you choosing it.
Questions
Is this the same as kubectl diff?
No. kubectl diff asks your API server what would change after defaulting and admission. This compares the two texts you supply, locally.