Do bakers use current local time inside their baked block or forge timestamp by simply baking (last_block's timestamp + allowed_to_bake_time(1 min for priority 0, 2 min for priority 2 and so on)).
I believe the vanilla baker uses the minimal timestamp, from the baking right (as you say, some delay after the previous priority/block): client_baking_forge.ml.
However, you should not rely on this. A baker might choose any timestamp greater than the minimal timestamp. Your node will ignore the block (at the p2p layer) if it is more than 15s in the future.