Labels are not 6502 instructions, they are only used as aliases for addresses.
When you put a label in your source before a piece of code (or data), dasm will assign the address of the next byte as the value of the label. When you compile, every time dasm encounter that label as an instruction operand, it will replace it with the address value.
Branch instructions are a special case, as their operand in 6502 machine language is not an absolute address, but an offset from the address of the next instruction. This offset is a 1 byte signed value, therefore branches can only span from -128 to +127 bytes relative to the next instruction address.
Despite this, when coding in assembly, you specify an address as the operand of the branch instruction (either by using the actual value or a label), and the assembler will calculate the corresponding offset to be used in the resulting machine code at compile time. If the calculated offset is out of the above range, you'll get an error and dasm will abort compiling.
You have to reorganize your code so that every brach occurs in the valid range.
A simple workaround is to invert the branch condition and make it skip a "jmp" instruction, as this use a full address as operand and can jump anywhere in memory.
E.g. if you need to brach to "Dest_Code" when a previous instruction results in a zero, but "Dest_Code" address is out of range, you can replace this
Lastly, I would like to know if there is a way to make sure that code in a label is not executed when I don't want it to be.
Since labels are just aliases defined in the assembly and do not generate 6502 machine code by themselves, there is not code "inside" a label. And the presence of a label doesn't change the flow of the program. You must use jump and branch instructions to do that.