If the Pokémon is poisoned or badly poisoned, it will gain 1/8 of its maximum HP at the end of each turn instead of taking damage.
When a Pokémon with Poison Heal is badly poisoned, this has no effect on the Pokémon's HP recovery. However, the bad poison counter still increases each turn even if the Pokémon has Poison Heal; as such, if Gastro Acid is used on the Pokémon with Poison Heal after being badly poisoned for five turns, it will incur poison damage starting at 5/16 (instead of 1/16).
Yes, a Pokemon with Poison heals.
Hope I helped :)