You can get different sized arrows using VectorScaling and VectorSizes. For example:
VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorScaling -> Automatic, VectorSizes -> {0, 1}]
The advantage of using all vectors with a unit length and specifying the magnitudes with colors is to make the plot less cluttered when vector lengths differ a lot in the plot. When using the default unit lengths for the vectors, you can get a legend that shows the length that corresponds to a particular color using PlotLegends
VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, PlotLegends -> Automatic]