Quote from docs for Dynamic:
continually evaluates f[val,expr] during interactive changing or editing of val.
which explains why your Dynamic is not touching w.
Dynamic[pp, {(pp = #; w = pp^2) &} ] is not interactively changed but automatically when you interactively change InputField content.
Following those points, your code should be rewritten to:
InputField[Dynamic[pp, {(pp = #; w = pp^2) &}]]
Dynamic[pp]
Dynamic[w]