It is quite normal to have multiple OTUs assigned to the same taxonomy string. Note that if they're different OTUs it means that they actually matched different reference sequences on the reference database, so they're different. It just happens to have the same taxonomy string.
Now, your specific question about filter_otus_from_otu_table.py. It depends a bit on your definition of "rare OTUs". The filtering of low abundance OTUs (i.e. OTUs with a handful sequences) is often performed due to a lack of trust on the validity of those sequences. I know there are different points of view regarding this topic, and some other users may disagree with this view, but having a limited number of sequences on those OTUs you're unsure if that is a true sequence present on your dataset or it is just a result of sequencing/PCR error. It may be useful to perform an analysis at the sequence level, in which case instead of OTUs it would be better to perform your analysis using DADA2 or deblur, which operate at the sequence level.
On the other hand, if you are interested in removing taxa that you know it shouldn't be in your dataset (i.e. they're contaminants) you can use filter_taxa_from_otu_table.py
Hope this helps!