As a light client, will I be able to ask any node to read data from my smart contract ?
The short answer to your question is no, you will not be able to query any node for blockchain state. There will probably exist similar centralized mirrors of the state and/or a handful of well-known nodes that serve the majority of state requests.
The essential issue is that only nodes that exist as part of some high-end hardware setup could handle the kind of traffic one might expect from exposing a public API to query its internal state. It is an easy DOS attack to send many requests for some random pieces of the state to a node and we cannot expect everyone who wants to run a node to set up protections against that.
Moreover, your question about querying multiple nodes and someone aggregating the results is really a question about handling consistency in a distributed database. The CAP theorem is a famous result with respect to this and blockchains tend towards availability and partition tolerance over consistency, so you can certainly expect that you will get different answers from different nodes even in the case that you could query arbitrarily and handling that would be something you as the dapp developer would need to handle because what it means to deal with inconsistent data sources properly is use-case specific.
That handles the read side of things. As for the write side, we cannot force all nodes to accept transactions from the outside world, though I think that most will because every validator will want there to be as many transactions on the network as possible. And handling "deploys" as we call them is much lighter compared to state queries, so the DOS risk is lower.
Thanks for the good question!