Some initial tests:
Low priority guard station food/drink pulls from higher priority main stockpile: workshop production goes to main stockpile first (in my case, the main stockpile is right next to workshop) and then is later distributed out.
High priority local mining stockpile pushes to low priority main stockpile: Stone is stocked at the local stockpile, later moved to main stockpile.
It seems that the only difference between push/pull is that a stockpile can only pull from one other stockpile, but many stockpile can push to a single central stockpile.
So, lets say that A is our high priority stockpile, and B is our low priority stockpile. U stands for unstocked goods.
A pushes to B: U goes to A, later transferred to B if B has room. U goes directly to B if A is full
A pulls from B: Goods are taken from B to A if A has room, then U goes to A, then U goes to B if A is full.
B pushes to A: U goes to A if room, other wise U goes to B, then A takes goods from B if A has room.
B pulls from A: U goes to A if room, otherwise U goes to B, then B takes goods from A.
Contradiction from patch notes?
"When stocking a given stockpile, gnomes will first attempt to pull goods from other stockpiles before stocking unstocked goods"
"Each of the smaller stockpiles can be set to pull from the large one. If the small stockpile has a higher priority than the large one, unstocked goods will go there first and when full go to the large one second. When the small stockpile is no longer full, it will pull goods from the large one if no unstocked goods exist."