There is no problem with a GOSUB in an IF...THEN... statement (as long as you're using PICBasic Pro... however your syntax is wrong...

Turning to your original post...

IF LCD_Present=1 THEN
Gosub LCD_Subroutine
ENDIF

This is correct... but....

IF LCD_Present Gosub LCD_Subroutine : ENDIF

...is NOT correct. You do not need the ENDIF statement in this case and you DO need a THEN inserted... making a correct statement as...

IF LCD_Present=1 THEN Gosub LCD_Subroutine

Finally... in the two examples above, just because you are using an extra line with an ENDIF statement in one of them, does not generate any extra code when you compile. The ENDIF is really a directive for the compiler that tells it you have a multi-line IF...THEN block rather than a one-liner. If you write your code all on one line or in a block terminated with an ENDIF, the resultant compiled code will be the same. The ability to create large blocked IF THEN statements (terminated with an ENDIF) is one of the most useful features of PBP over PBC. Remember there is no code penalty when using ENDIF.