Charm will lower the opponent's Attack by 2 steps (termed BTLs in the Gameboy description) on the Stat growth scale.
Charm will always fail if it has already been used 3 times on the same pokemon, without a move that raises Attack being used by or against the pokemon affected by Charm. This is due to the fact that a stat may only be lowered by a maximum of 6 steps, until it is reset by the use of Haze or the pokemon is switched out normally. The maximum is the limit of how many decreases can be applied to a stat. If another move decreases the Attack stat of the pokemon that Charm is used against, the number of steps that it decreases the Attack stat by will count toward the 6 step limit. This will not reduce the number of times that Charm can be used unless the decrease is by at least 2 steps. The decrease will still max at 6 steps, so Charm will only provide a 1 step decrease if there are already 5 steps of decrease in effect.
Charm is affected by Brightpowder when the opposing pokémon is equipped with it.