1) Can I query the contract address without having the synced node ? For example in geth I'd like to execute
web3.eth.getBalance("0x6090A6e47849629b7245Dfa1Ca21D94cd15878Ef")
however the answrer is 0.
2) I know there is metamask, myetherwallet etc where I can query contract without having the full node. Why is it possible? How about clients such as parity, geth ?
You need to have a fully synced node in order to get the correct balance. However, you don't need to use a local node. MetaMask uses Infura and MEW lets you use one of many different providers. You can connect to one of those providers and use their fully synced node to get the correct balance.