MovementSystem should process movement only, and there should be a separate system for collision detection/reaction.
The only benefit I see from processing collisions in the movement system is that you could use the same loop that processes movement to process collisions, so it would be more efficient.
But unless your game had performance issues due to logic updates taking too long, I would move collision detection/reaction to a separate
CollisionSystem which is processed after
MovementSystem. This would be a cleaner solution in my opinion.
And, about your last question, I would check for collisions each frame. Checking every 200ms can lead to entities colliding without being detected in some cases.
This might depend on the kind of game that you're making, the speed your entities are moving at, your game update frame rate...
EDIT: In response to this question:
Also i'm wondering what the movement system should do regarding this approach. ATM, my movement system look at the Velocity component of all the concerned entities and do a simple translation of the entity coordinates but since the collision calculations are made in another system, i would need to know the "old" and move the entity to his hold position in case of collision. I'm not really fan of this. – nathan
The movement system should update the current position of each entity, just as you describe.
When you react to collisions it isn't necesary to know the last position of each entity. If you don't want an entity to break through another one, you could calculate the projection vector of the overlap and use it to resolve the collision. This article explains very well how to detect simple collisions and how to calculate the projection vector using the Separating Axis Theorem (SAT).