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')))
);
}
}
}