Cassandra version 1.2 and higher by default uses vnodes (256 vnodes), which splits a nodes token into multiple sub tokens to make data distribution evenly to all nodes in a balanced manner.
Each vnode will be assigned a token. So you can find how many vnodes assigned in configuration file or using nodetool.
As you have said "num_tokens" tells number of vnodes in that Cassandra node.
(or)
Execute nodetool ring command which will list the tokens in your cluster for each node.
nodetool ring
It is recommended to use vnodes which will balance your cluster. Earlier Cassandra versions lesser than 1.1 does not have vnodes, So we used to generate the tokens and configured in initial_token parameter available in cassandra.yaml file.
Hence in Cassandra versions 1.2 or higher, using of vnodes is enough to balance the cluster, no need for re-shuffle data.