Hi Daniele,
I think the reason behind using a floating point target is given in the docs:

This is used for measuring the error of a reconstruction in for example an auto-encoder. Note that the targets t[i] should be numbers between 0 and 1.

I stumbled upon this issue a while ago 20 and was mistakenly thinking its being only used for a binary or multi-label classification. 
This would also answer the second point. Since there are no discrete classes, the implementation of an ignore_index wouldn’t really make sense.
The documentations mentions

target = torch.ones([10, 64], dtype=torch.float32)  # 64 classes, batch size = 10

which seems correct.
Note that nn.BCEWithLogitsLoss can be used in a multi-label classification use case, i.e. a single sample has more than a single correct (active) class.
In this example all 64 classes would be active for all 10 sample in the batch.