Trigger to get next prefixed ID: Is there a better way?
I expect your trigger to throw runtime "Mutating table" error . Unless autonomous transaction is used because you cannot query the table that fires the row-level trigger inside its body.  

I'd rather keep it simple - create a sequence, for instance ,  CREATE SEQUENCE SEQ_PROJECT START WITH 6 INCREMENT BY 1. 
Also, I'd fire trigger only if project_id is not set (WHEN clause) . 

CREATE OR REPLACE TRIGGER "PROJECTS_PROJECT_ID_TRIG" BEFORE INSERT ON PROJECTS
    FOR EACH ROW
    -- Fire trigger only if statement doesn't set project_id     
    WHEN (NEW.PROJECT_ID IS NULL) 
      BEGIN
       :NEW.PROJECT_ID := 'LC' ||to_char(SEQ_PROJECT.NEXTVAL,'FM000000');  &lt;- Fill Mode
      END;