While main purpose of ALE is to run linters and fixers it also supports some (not all) of the LSP calls. The developer likes this functionality but it's a somewhat popular opinion ALE could relay on a different project for this and therefore delegate some of the maintenance burden.
ALE can be used almost immediately after installation. Some linters that need fiddling before they're usable with Neomake or Syntastic will "just work" on ALE.
YouCompleteMe works best for C-based languages (C, C++, Objective-C, Objective-C++) and it's semantic engine is Clang-based which means that it only works for the C-family languages.