Solution:
Clearly, the first requirement imposes an upper bound on k (if there is an initial configuration with k stones where no moves are possible, then taking away stones from this configuration will not suddenly make a move possible) and the second requirement imposes a lower bound on k (similarly, if infinitely many moves are possible for a given k then we can just add stones and ignore their presence altogether).
First, we determine the upper bound. Note that if we place on each square a number of stones that is one less than the number of squares adjacent to it (so 1 on every corner, 2 on every edge and 3 on "inner" squares) then no moves are possible, as no square has enough stones for a move to be made. However, should we take any more than this number, then a pigeonhole principle on the squares shows that, for any given configuration with this many stones, a move is always possible because at least one square will have at least as many stones as it does adjacent squares. Calculating the total number of stones, we get 3n2−4n.
Now, we propose a lower bound for the second condition of 2n2−2n. A configuration with this many stones that has an infinite number of possible moves does indeed exist; place on all the white squares a number of stones equivalent to the number of squares bordering them. Then firstly perform a move on all of the white squares. After this has been done, each of the black squares will have a number of stones equivalent to the number of squares bordering them. After doing a move on each of the black squares, we find ourselves back at our original state, and proving there is a loop between the same state is sufficient to finish, as one has merely to repeat this loop indefinitely to have the desired infinite sequence.
Now let us show that 2n2−2n is indeed a bound. If an infinite sequence is possible, as there are only finitely many configurations available to us, you must be able to go from some configuration to itself in a finite number of moves. To do so, you must apply a move on every square at least once (it can be proven that you have to apply the same number of moves to every square, but this is not necessary to finish) as if there are squares that are untouched, at least one square not used for a move is adjacent to a square that has been used and the net movement of stones to the unused square has to be positive, which is a contradiction with the fact the net movement should be 0 everywhere to return to the same state. Now, each stone can be labelled with an edge (here, an edge is defined as the border between two squares). To do so, all we do is the first time an edge is crossed by a stone, we assign that stone to the edge permanently, and henceforth the stone in question is made to cross over that edge exclusively. This can be done as to displace the stone you must play a move on its new square, but this will always enable you to return to its original square, and so forth. Clearly, only one stone is associated to each edge, and since every edge is crossed at least once, we must assign a stone to all edges, so we need at least 2n2−2n stones. Note that not all stones are necessarily assigned an edge by the end; this can be thought of as an injective function from edges to stones.