M.M.
What seems to work for me is teaching my child positive conflict resolution skills instead of negative.
For example: Do not punish for kicking MIL by sending her to her room, for example. After she kicks - remouve her and sit down with her, ask why she did that, if she doesn't know - help with identifying the cause: are you angry? are you upset grandma laughed? You will get to the root of the problem, most of the time it is some strong emotion your daughter does not know how to handle (may be your daughter thought that MIL's laughing was inapropriate for the comment she made). Then you teach her what to do - if you do not like that grandma laughing you say "grandma I do not like when you are laughing now " . Then review again that hitting is not right. Then teach your daughter to apologise to MIL and to say what you taught her, and may be MIL will say "I am sorry, I did not mean to hurt your feelings by laughing at you".
On the other hand if your daughter just being moody and does not want MIL to laugh, make sure the child understands that she cannot tell grown ups what to do and needs to sit with you until she promices she will not kick in the future.
It is a very delicate ballance on what to do and how to punish. Every time your child misbehaves - identify the cause and then your experience and your heart will tell you how to proceed. Do not be quick to punish. Take time to hear her out and incourage her to express feelings verbally.
This way you show your child and give her experience in resolving a conflict in a positive way. The more experience she has the better she will get.
Punishing and sending her to her room will not teach her any skills except for bottling up anger and that adults can get away with things kids get punished for.