If the price you are trying to set on your order to open is better than the current market, you will need to place a limit order. This will only execute if the market price is at this limit or better. If you are attaching a limit as a take profit level then this logic also follows, ie the position will only close if this limit price or better is reached.
A stop order will be placed if the level you are trying to execute is worse than the current price. If the level is breached, your order will be dealt at market irrespective of the price. You can therefore be filled at a worse level than you requested. If you are attaching a stop to a position as a close condition and it’s triggered, there is a chance it will be filled at a worse level.