Making a mod-13 counter
I have written thousands of counters which are not a multiple of two. The procedure is always the same:

if (counter==MAX-1)
   counter &lt;= 0;
else
   counter &lt;= counter + 1;


Plus a reset of course. 

Your counter does not start at 0 which is not usable in 99.9% of the cases.
Also you solution for mod-13 is not generic usable so in my option there is no 'most efficient' way. (Also in what aspect 'most efficient'? Area? Speed? Power? )

In the industry you can't spend your time on optimizations like that unless you really, really need them. Modulo 13 running at 40GHz: Build a shift register with 13 registers, loop the output to the input. Reset with 13'b0000000000001

A different way to count is us count-down.

if (counter==0)
   counter &lt;= MAX-1;
else
   counter &lt;= counter-1;


This makes that the compare logic becomes a big AND gate instead of AND/OR. But the gain in today's logic is neglectable.