1. It seems as though the timer delay is causing this, I'm not sure if its a bug or not as i have never really used the timer before, but you should be able to overcome it by making an event like: Is gradient.width greater than 200? -> Set width to 200.
Also, while your method seems to work just fine, personally i would use a private variable for "dash" instead of relying on the width of the gradient bar. Then you can set the width of the dash bar to (c/m)*w where c = Your current amount of dash, m = your maximum amount of dash and w = the maximum width of your dash bar when your dash is full. So it would look like: Always -> Gradient Set Width to: (Player('Dash')/200)*200. Then you would just need to adjust the value of dash and the bar will change width accordingly. But if you like your method, go for it , i just find variables slightly easier to work with.
2. Can't really see what you mean here, seems to work fine
3. As far as i know, this is a bug.
4. Do you have the "Snap to Moving" and "Snap to Resizing" boxes checked? Also i noticed some of your Grass objects only had a height of 30 instead of 32, this can cause them to snap funny.
Also, welcome to the forums!