Binary-only distributions
If you make a binary-only distribution (that is, you distribute the program solely "in compiled or object code form" in the words of the License), then the MS-PL says that you may do that, as long as the other license does not require distribution of the source code as well. So, basically it means that the other license cannot be something like (A)GPL or MPL, since those licenses require source code distribution.
The problem with the MS-PL is the condition that if you distribute any portion of the software in source code form, then you may do so "only under this license":
If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
However, if you release your program solely in executable form ("in compiled or object code form" in the words of the License itself), then the MS-PL itself says that you may do what you describe in the next sentence ("If you distribute any portion of the software in compiled or object code form, ...).
So, from the licenses you mentioned, using an MS-PL library together with BSD, X11/MIT or Apache 2.0 code would be fine, since those licenses also allow binary-only distributions. MPL 2.0 probably would not work, because that license requires distributing the source code as well; however, see below for a possible technical workaround, if you really want to attempt this.
See also: https://www.gnu.org/licenses/license-list.html#ms-pl
See also: https://www.mend.io/resources/blog/top-10-microsoft-public-license-ms-pl-questions-answered/
Source code distribution
For some programming languages and environments, there may be a technical workaround to deliver the "source code" of the main program (under a license other than MS-PL) while also satisfying the MS-PL license requirement for the MS-PL portions of the program:
If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
For programming languages that support combining portions of compiled or object code together with other source code, you could conceivably arrange your project tree in such a way that the MS-PL portions of the code are maintained only in compiled or object code form (for example, only .o files for the C/C++ code, only .class files for compiled Java code, only .pyc files for compiled Python code, and so on).
Such an arrangement would be technically possible, but it would make it very inconvenient to make changes to the MS-PL portions of the main program. Also, such an arrangement would be forbidden by licenses like the GPL, which require releasing the complete corresponding source code of the entire program, including all components.