Explanation
Basically, cloneNode does exactly what it says. It clones an element and all of it's attributes, that can be modified without affecting the original node.
Syntax
node.cloneNode(true or false);
If the boolean value in the function is false, it does not clone any of the childNodes of the element. Yes, you guessed it. If the boolean value in the function is true, it also duplicates all of the childNodes of the element. This is usually the value used, as if it is false, it does not keep any of the text in the element either. However, it is sometimes usefull to have an empty node.
Example
Theoretical: In some cases, you are using elements to modify other elements. In doing so, the original element is changed, and you can not use it any more. So, a way around this is to clone the element, and use it. I was recently writing a script that put 2 columns in a table in order, but to do so, I had to change the innerHTML of each element with the elements in a sorted array. However, the elements in the array, were the same elements I was changing, so the elements in the array were being changed as the original ones were. This isn't what I wanted, so I cloned each row, and placed it in the array.
Real:
<html>
<body>
<p>Hello <b>there</b></p>
<p>Hello <i>ereht</i></p>
<script type="text/javascript">
<!--
// simple example
// lets put the bold there in the italic ereht
// there are better ways of doing this, but it is an example :P
var element = document.getElementsByTagName("p")[0].cloneNode(true); // why true?
document.getElementsByTagName("p")[1].lastChild.innerHTML = element.lastChild.innerHTML;
//-->
</script>
</body>
</html>
As you can see, cloneNode has its uses. Be carefull not to use it with something that has an id, as it will clone it. We don't want that, do we?