If we are not able to know the identity of nodes owners how can we be certain that not a single entity or less than ten controls most of those nodes ?
We cannot. We can only observe other nodes, and guess the level of decentralization. Because even if you can see some node, that returns the same "User Agent" as Bitcoin Core, it doesn't mean that the code under the hood is identical. It is most likely the case, but it is not necessary. It has to be only compatible, but it can handle some stuff differently. Also, the good example of that is Firefox and Tor Browser: you never know, which client is used, because both behave in a similar way (but the software behind them is different).
Because the way i understand decentralisation has nothing to do with the number of nodes but with different entities controlling them .
Yes, and for that reason, it is hard to measure. For example, I own more than one node: some of them are pruned, some of them are full, and they are running from different locations. It is hard to take two different nodes, and say "Hey, both of them are controlled by Garlo Nicon!". To discover that, you need to change some settings, and for example send some transaction below one satoshi per byte, and see it accepted, when mempools are empty. Or you have to craft some specific transaction, and then my node can respond to that, by sending back a different transaction, which for example spend some of the coins from what you just sent.
It is possible to build a lot of different protocols on top of Bitcoin. And some people did that, so even if you can see, that some node is compatible with Bitcoin Core, it can have some hidden features.
Does that mean that through consensus Bitcoin core developers can make changes to the blockchain or does their control only end in the Bitcoin core.
They only provide software. But people can run whatever they want on their machines. And for example I use a slightly modified version on some of my nodes. Also, if you just change your configuration file, you can reach a different outcome, even if you use a standard client. For example, you can allow free transactions, you can remove the dust limit, you can change the priority of transactions in your own mempool, you can batch transactions with matching sighashes, before including them in your candidate blocks, and so on.
Majority pool/miner usually need to support the change as well.
It depends, which feature is needed. Because a lot of things can be implemented, without getting any additional support from mining pools. For example, it is possible to implement transaction batching, without notifying anyone. The same with data compression. The same with covert communication channel. The same with "test sidechain, based on signing mainnet coins". The same with Scanners (based on Silent Payments). And the same with a lot of other features, which I hope will be published by some people in the next year.