I continued to investigate the case, and found that:
- Power Query automatically adds Host and Content-length headers. I watched that, using Whiteshark for sniffering traffic, created by Power Query. So the error, mentioned in the post, happens because:
1. we try to override the headers, wich is already prepared automatically, and
2. implementation of overriding these headers contains errors I mentioned previously.
But - possibly 2. is done intentionally, because we have no obvious reasons to override these 2 headers - automatically generated values meet the needs of the web-service in my case.
As for error 400 - in my case it ... disappeared today. I'm still try understand what happened, but at least my current understanding is that 400 responce is due to some mistakes in the service or in intermediators (protocol stack, Windows miracles etc.) and not due to mistakes in making call of the service from Power Query.
AND - be careful - in my case, if you havigate to XML content of Web.Contents via UI of Power Query (so it adds Xml.Tables to Web.Contents), PQ automatically cut Headers clause from Web.Contents parameters, beleive it or not :-). And it happens in both Excel and PB Desctop PQs.