The plugin itself doesn't do any checks, as it doesn't keep track of the achievement data. I'm going to describe what the Android version does here, you didn't mention if you were using the web variant or not so I'm going with the more common one. The web one just fires the request off to the server
Here's the docs for the underlying API the plugin uses AchievementsClient#Unlock
When you use these methods your basically talking to the Play Games app on that device, which decides what it needs to send to the server and when. Generally it tries really hard to avoid talking to the server, and will show you local copies of the data instead. It's the same in reverse, so it won't send changes until it has to. The API has some methods to force it to sync ( anything with the "Immediate" label will force a sync of all recent changes ) but we generally try to avoid these.
I expect the app is sensible enough that if you call unlock with something that's already unlocked it won't actually do anything. However, the documentation doesn't say if it does or doesn't. You should probably just test it. When you open the achievement dialog it will normally pause slightly as it opens to sync if it needs to, but will be nearly instant if it doesn't.