The general answer to the first question is: "Yes, that's the purpose of Alphanet!" then the devil lives in the details.
Some constants are different (number of blocks per cycle, time between blocks, length of voting period, ...) between alphanet and mainnet so you mustn't hard wire them. Instead, you should ask them to the node (through RPC) if you need them.
The activity and the age (therefore the size) of the chains differ also so the efficiency of some operation might also differ.
So it doesn't exonerate you to think but yes the general idea is and remains far close as possible: Alphanet is Mainnet with free tokens.
For the second more specific question: there are 2 alternatives:
The marvelous: Someone (why not you!) submits the protocol Athens on Alphanet and makes enough noise around it so that Alphanet participants vote for it, the quorum is reached on each phase (Beware, voting periods are much faster Alphanet: 8192 blocks so 2 days 20 hours 16 minutes if everybody bake) and Alphanet migrates to Athens in the exact way Mainnet may!
The ugly : Mainnet migrates to Athens but no way to involve enough of the community of Alphanet participants in a vote on Alphanet. Because Alphanet has to reflect Mainnet, soon after Mainnet migration, Alphanet would be "hard reseted" to a new chain running Athens. Let's try make that not happen ;-)