When moving along a contour line of the function, the value of the function neither decreases nor increases, and so the dot product of the velocity vector and the gradient vector must be zero. By definition, the velocity vector must be tangent to the contour line, so the gradient vector must be perpendicular to the contour line in order for the dot product to equal zero. The gradient vectors of a function are perpendicular to the contours of that function. The contour lines show paths in the plane along which the function is constant, so the direction of greatest increase of a function should be directly away from the contour lines. Gradient vectors should be perpendicular to contours.
Contours are closest together where the function increases rapidly.
The length of a gradient vector at a point indicates the steepness of the graph of the function at that point, and so determines the slope of the tangent plane at that point. The direction of the gradient vector tells you the direction in which the function is increasing most rapidly, and so tells you the orientation of the tangent plane. So, the gradient vector of a function at a point together with the value of the function at that point is all you need to know to determine the tangent plane to the graph of the function at that point. The directional derivative of a function at a point is just the slope of the tangent plane at that point in that direction. It is also the dot product of the direction vector and the gradient vector.