Cost figures are derived from LQI and used to rank Zigbee route hops by link quality. Each Zigbee hub and repeater computes its LQI figure by some proprietary method; usually based on signal strength at its receiver (some implementations can track link error rates). This number (ranging from 1-255) gets mapped to a cost number (ranging from 7 down to 1) which gets transmitted on the link during periodic status exchanges which happen about 4 times a minute, even when there is no message traffic.
The number transmitted to the device at the remote end of the link during a status exchange is designated the inCost; the number received from the remote device during a status exchange is designated the outCost.
So with inCost/outCost figures you get a measure of reception and transmission quality at each end of the link. When the link quality isn't symmetrical, the hub or device can have a link with high LQI/low inCost (strong reception) but high outCost (weak transmission, resulting in low LQI measured by the remote receiver).
If the remote end of the link fails to report link status (it's allowed a number of 'age' intervals as a grace period), an outCost of 0 is assigned. So..... you want to see low, nonzero numbers for inCost/outCost for links in the neighbor table. These numbers don't appear in the Route Table entries at all; those entries just describe the first hop of a route.
The Neighbor table will normally show any repeaters within range of the hub (up to a limit of 16) that are reporting (or have reported) link status. If there are more than 16 within range, the poorest ones (based on link status metrics) should eventually be evicted from the table and replaced with better ones.