This is working as designed. When you have a subquery like
(select MyColumn From MyTable)
SQL looks for a column named in the table MyTable. If it finds one, it uses that column. But if Mytable doesn't contain a column named MyColumn, SQL will look at the outer table. If it finds one there, SQL will use it. If it doesn't find one there, then you get a syntax error.
So since RMonth exists in test2, but not in test1, your query is equivalent to
delete test2
where test2.RMonth in (select test2.RMonth from test1)
And, of course, test2.Month can be found in test2.Month, so the row is deleted.
Tom