Estimating a regression without a constant term is essentially saying "I know the intercept of my model is equal to zero. I don't need to estimate it because I know with certainty what it is." That's a pretty bold claim to make. If you're right, then you can estimate the slope with slightly increased precision. If you're wrong, your estimate of the slope will be biased (often badly). It almost always makes sense to include the constant term in a regression model because the cost of estimating the intercept is so low compared to the huge biases that could result from improperly omitting it.
If you have a categorical variable in your model, omitting the intercept won't change any of the other estimates in your model because the otherwise omitted dummy variable takes the place of the intercept. Omitting the intercept will change the interpretation of the coefficients on the dummy variables.