As stated earlier, dry hop near the end of fermentation. If you dry hop at the beginning much of the aroma will be "scrubbed" out/ lost during fermentation. While this is a common method for NEIPA's, it's not ideal to ONLY dry hop near the beginning of the ferment. This also leads to hop haze. I personally dry hop after fermentation then immediately cold crash. This doesn't cause many issues with O2 ingress, and the quick chill sinks the hops down through the beer instead of leaving them floating at the top to be oxidized.
Using a hop bag is fine. I'd boil the bag, potentially add some weights like marbles, add hops, and throw the bag/hops/weight in the beer. Everyone has their own opinion on the length of time a beer needs to be dry hopped, but it generally ranges from 1-5 days.
In general:
When cold crashing with dry hops, the dry hopped beer can be left a few days longer.
Certain hops that have a reputation for harshness in dry hopping (Nelson, etc..) should be given shorter dry hop schedules (maybe 1-3 days).
Big dry hop additions (>100g) may be more prone to off-flavors if dry-hopped too long compared to small dry hop additions.
Use of bags, mesh, etc.. may decrease the amount of oils extracted compared to throwing the hops straight in the beer. For leaf hops, floating hops may lead to lower extraction rates compared to pellets, so bags, mesh, etc.. may be preferred when using whole flowers. .