UCF is written so as to connect I/O pins on ur design to the ports on FPGA, before synthesizing design on FPGA for example you need clock generated on the board to the clock pin in your design and also connect your outputs to external component on the fgpa board.
UCF are used in synthesis as well as in implementation when we r talking abt the FPGA implementation. It consist of all the pin location info, path timing info and other stuff like intilization or ROM values, any other constarint related to placement etc