Have you figured out yet that example.com is the ONLY thing that works? If you need more of 'em, go to example.net or example.org or example.xyz or...
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
This rule, with conditions, is meaningless in its current location. If it is intended to intercept requests for images and so on that actually exist, it has to go before all other Rules. But it's not the ideal form anyway. Instead, write each Rule to include only the extension the Rule specifically applies to. Or no extension, if that's your preferred form.
RewriteRule (.*) http://www.example.two/example.html$1 [R=301,L]
RewriteRule xyz1(.*) http://www.example.three$1 [R=301,L]
RewriteRule xyz2(.*) http://www.example.four/file.html$1 [R=301,L]
Gotta say that some of those rules look like gibberish, even without the floating domain names.
Rule 1: capture ALL requests, regardless of domain name or extension, and send to
www.example.two/example.html{blahblah}
where {blahblah} is the original request. Why is it getting attached to the URL
after "example.html"? I also don't understand why this Rule doesn't result in an infinite loop. Is the htaccess file located in a directory where requests for www.example.two will never see it?
Rule 2: if request contains string "xyz1", then capture anything that might happen to come after xyz1 and send to
www.example.three{blahblah}
regardless of whether the captured part begins with a slash.
Rule 3: same, but this time look for a different string, and attach the overflow to www.example.four/file.html. So again, as in Rule 1, attaching text in a location where nothing should be attached.
I get the impression you don't actually want the $1 captures at all. What are they there for?
However I am getting error, when I tried abc.example.com/xyz1 it brings me to http://www.example.two/example.htmlxyz1 instead of http://www.example.three
Yes, that's exactly what your Rules are set up to do. Rule 1 has no conditions, so it will always redirect all requests: in this case, from www.example.com/xyz1 to www.example.two/example.htmlxyz1. There is no mechanism to prevent Rule 1 from executing, so you will never get past it. What happens next depends on your error-handling functions.