Circos doesn't create legends right now.
It also doesn't report the association between heat map value and color. I have to add this.
To make a grey heat map, I suggest you use the greys Brewer palette. It's enough to do this in the <plot> block
type = heatmap
color = greys-9-seq
min = 0
max = 100
to map the range [0,100] onto the 9-color Brewer palette. Unless you want to do your own remapping, you don't need to use <rules>. The example you posted was created to illustrate how rules work.
The Brewer palettes don't start/end with white/black. If you want to include them you can add a color to the list
color = white,greys-9-seq,black
though be aware of the fact that this will break the perceptual uniformity of the palette. If you want to assign a specific color to the min/max values, then you can use a rule.
<rules>
<rule>
condition = var(value) == 0
color = white
</rule>
<rule>
condition = var(value) == 100
color = black
</rule>
</rules>