What does this warning actually mean and how to resolve this ?
This is saying that adding
public - a visibility specifier - to a constructor has no effect.
Constructors are run only once, when the contract is initially deployed. They can't be called at a later time, so aren't "visible" in the sense that variables or functions are.
Abstract contracts don't have a constructor, so the error is basically saying: "You've incorrectly used a visibility specifier on a constructor - did you even mean to use a constructor in the first place, or did you intend to write an abstract contract?".
In v0.5.0 it was mandatory to add visibility to the constructor. This is from the docs of the breaking changes in v0.5.0: https://docs.soliditylang.org/en/v0.7.0/050-breaking-changes.html#explicitness-requirements
Explicit function visibility is now mandatory. Add public to every function and constructor, and external to every fallback or interface function that does not specify its visibility already
I guess it wasn't mandatory before but best practice.
Things have changed since v0.7.0: https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html#functions-and-events
Visibility (public / external) is not needed for constructors anymore: To prevent a contract from being created, it can be marked abstract. This makes the visibility concept for constructors obsolete.