You should use && instead of & for joining two logical conditions.  
So, your code should look like something this:

    List<Profile> PROFILE = [SELECT Id, Name FROM Profile WHERE Id=:userinfo.getProfileId() LIMIT 1];
    Public String MyProflieName = PROFILE[0].Name;
    List<User> Use = new List<User>([SELECT Phone, Id FROM User WHERE Id = : UserInfo.getUserId()]);
    for(Case c:Trigger.New)
        {
            for(User u: Use)
            {
                System.Debug(
                (c.RecordType.Name='Client Service')
                &&((c.Categories__c !='DCS Client Services')||(c.Categories__c !='DCS Technical Support'))
                &&((c.Account_Segmentation__c != 'Z2')||(c.Account_Segmentation__c != 'Z3')||(c.Account_Segmentation__c != 'Z4')||(c.Account_Segmentation__c !=' Z5')||(c.Account_Segmentation__c != 'D1'))
                &&((MyProflieName=='DCS Client Services')||(MyProflieName=='DCS Technical Support'))
                &&((c.Origin='Email')||(c.Origin='Phone')||(c.Origin='Chat')||(c.Origin='Internal'))
                &&(!((u.FirstName='PBI')&&(u.LastName='Default')))
                );
    
            }
        }
    }