I think it's a matter of taste, my thoughts on it - .local is non-existing TLD, and it is a common practice to use .local for local resources. If your dev/test sites don't need to be globally accessible, it seems OK to use it, but if you ever want to show this site to someone from outside, he will not be able to reach it. Unlike .local, .test is a non-existent TLD which nobody uses so far, but one day it may be assigned and your .test sites will conflict with other sites, I'd never use it.
While site.com is your domain, you are free to define any subdomains inside it, and decide which subdomains you want to publish on a globally-accessible DNS server etc..
Personally, I prefer prefixes.