The result of both `true | echo "$?"` and `false | echo "$?"` is misleading. The content of `"$?"` will be set _before_ piping the command `false` to the command `echo`.
To execute these lines, bash sets up a pipeline of commands. The pipeline is setup, then the commands started in parallel. So in your example:
true; echo "$?" # 0
false; echo "$?" # 1
true | echo "$?" # 0
is the same as:
true
echo "$?" # 0
false
echo "$?" # 1
echo "$?" # 0
`true` is not executed before `echo $?` it is executed at the same time.