Both options give the expected result same result as Ulrich shows with their method, however, it can be seen that this is not to the second order that OP indicates they desire expanding to.
Normal[Series[(m^2+M^2)/(m^2-M^2)^2,{M,Infinity,4}]]
Normal[(m^2+M^2)/(m^2-M^2)^2+O[M,Infinity]^5]
3 m^2/M^4 + 1/M^2
You’ll notice both are expanded to the fifth order, this is where the 1/M^4 appears.
What is happening here is that both inputs have the same output in the form of a SeriesData object. Normal is used to strip this off and produce a non-SeriesData object. In this case, this appears to the user as a removal of the +O[1/M]^5 part of the returned expression. This is commonly called “big O” and is the same as what it represents in mathematics, this being terms of the noted order and higher. This is mentioned as being “contagious” in the documentation, which means that without removing it via Normal, the surrounding functions will be expanded as well, and a SeriesData object will again be returned.
OP explicitly mentions they want to expand to order O[M]^-2 about the zero, which, in the framework of Mathematica and the Wolfram Language, is not directly possible. Instead, one must understand that when they want to expand to such terms of the form O[x]^-n or O[1/x]^n about the zero, that this is, equivalently, an expansion to a term O[x,Infinity]^n where the use of Infinity indicates an expansion about Infinity, meaning that the term 1/x becomes a small term about which the expansion is performed.
To expand to the order OP requests is done as follows:
Normal[Series[(m^2+M^2)/(m^2-M^2)^2,{M,Infinity,2}]]
Normal[(m^2+M^2)/(m^2-M^2)^2+O[M,Infinity]^3]
1/M^2
/.to do manually what can be don’t automatically by the system. – CA Trevillian Mar 04 '21 at 14:37