Lo que sucede es que estás creando dos objetos de clase
Counter, por lo que cada uno tiene su atributo
counter que nada tiene que ver con el del otro.
Para lograr lo que querés hay dos formas:
1.- Utilizar un
Singleton
2.- Utilizar atributos de clase.
Para la forma 1, que es la más complicada, prefiero que la Wikipedia sea quien de la explicación.
Para la forma dos, te recomiendo este enlace que encontré sobre
atributos de clase en Python. Básicamente resulta en que las clases en Python pueden tener sus propios atributos, que se acceden directamente como "nombredeClase.atributo". Una vez que creas un objeto de esa clase, el objeto tiene un atributo del mismo nombre pero no es el mismo, es una copia propia del objeto.
Por lo que, en este caso, tanto desde Mod1 como desde Mod2 deberías ser capaz de hacer
Counter.counter += 1;
modificando así el atributo de la clase. Pero cuidado: por lo mencionado antes de que los atributos que ganan los objetos son copias de los de la clase, modificar el atributo de la clase no hace que los objetos vean el cambio (como se demuestra en el enlace que te pasé antes), como sucedería en Java con atributos estáticos.
Para que desde cualquier lugar puedas manejar un objeto de clase Counter, con acceso a través del objeto al atributo counter, deberías implementar un singleton.
Saludos.