I am using Core and Lwt together in a library I am working on. Core has good modules I'm familiar with and I'm more comfortable with Lwt threads.
Is this a common thing to do? Is there any strong reason not to do that and instead use, let's say, only Core or only Lwt+Batteries?
This should be fine. I do it all the time. I wrote the Future library, so I don't have to choose between Lwt and Async. However, be warned there are subtle differences in the semantics of Async and Lwt, so I won't recommend Future for very tricky concurrency code.