I need zipper to go smoothly on the corner as on first picture, but it appears distorted when modelling.
In your .blend, you have a non-uniformly scaled object being arrayed and deformed down a non-uniformly scaled curve. This creates quite a tangle. It's better to start off in an orderly way, than to make adjustments, and then adjustments of adjustments,and so on....
If you're stealing the curve from a part of the another object, (here, the suitcase,) apply the scale of that object before doing it.
In general, to array and curve in a way that's easier to get your head round:
Having done all that, you should get a result like the blue example below:
As you can see, there is still some wedge-deformation of the teeth as they go round the corner, but unless you're in extreme close-up, that should be good enough?
If you want to avoid all deformation of the teeth, you could use the method from this answer, (or numerous others on tank-tracks), and array a simple plane (which deforms), instead of the teeth, Then instance the teeth onto the plane-array's faces. The teeth won't deform. That's the green example.
However, you've modelled the teeth as a pair, and in the green example,that leaves a slightly odd gap between one pair and the next. So, you could instead model the teeth separately, and use the instancing method twice, (2 arrays), to get the red example.