You do it by writing much like what you did, but in the proper order, and using proper syntax. For example, using symbolic tools, we might do this:
x1=(w-0.641)/(1-0.641*w);
x2=(w+0.641)/(1+0.641*w);
LEARN TO USE SEMICOLONS! As well, LEARN TO USE PARENS PROPERLY. Functions use (), NOT []. Just because you think an expression is easier to read if you use [] in some places, that does not make MATLAB understand your syntax. {} and () do different things.
C = cosh(acosh(x1)+acosh(x2)+acosh(x3)+acosh(x4))
C =

If you wanted to write this purely using function handles, it is as easy.
x1 = @(w) (w-0.641)./(1-0.641*w);
x2 = @(w) (w+0.641)./(1+0.641*w);
As you can see here, I used ./ to denote a division, so this will work for vectorized computations.
Cfun = @(w) cosh(acosh(x1(w))+acosh(x2(w))+acosh(x3(w))+acosh(x4(w)))
Cfun =
@(w)cosh(acosh(x1(w))+acosh(x2(w))+acosh(x3(w))+acosh(x4(w)))
And now we can evaluate the function handle in Cfun as:
Cfun([0:0.25:1]')
ans =
1.0000
0.6242
-0.3057
-0.9999
1.0000
Be careful, as for large magnitude inputs, it seems there is a small imaginary part that seems to arise when the computations are performed in double precision.