If the subject of the tag is relevant to your problem, add it to your question. Also, think about what kind of people you want answering your question. If you think "I need experts in
X to answer this," then tag it with
Why this ruby code doesn't work on Windows? Should it be tagged with windows?
Yes, if your code works on another platform, but not on Windows, then Windows is part of your problem. That tag is relevant.
Is there a .NET library similar to to A and B libraries in Python? Should it be tagged with python?
No, you're not looking for a Python solution, so it's not that relevant. It should be enough to link to the library and explain what it does in the body of the question. You really want .NET people looking at your question, not really Python folks. (Note that this type of question is likely to get closed as "not constructive" for being a shopping question.)
Is A fixed in all modern browsers? Should it be tagged with webbrowser?
That seems like an awfully generic tag. I wasn't aware we had it. However, that does seem like the right use for it. See the similar question: What browsers use their own copy of Flash?
How to test this AJAX form in A? Should it be tagged with ajax? (A is testing framework)
Yes, in this case your question is specifically about A, but Ajax is still highly relevant. You'd want people who work with Ajax and the testing framework to view your question, so tag it with both. (Specifically, you'd want people who have used that testing framework in the way you're trying to use it to answer your question.)