First of all, both are simply common initials; they're nothing to be afraid of.
Now, CRUD is a simple term that was abbreviated because it's a common feature in many applications, and it's easier to say CRUD. It describes the 4 basic operations you can perform on data (or a resource). Create, Read, Update, Delete.
REST however, is a named practice (just like AJAX), not a technology in itself.
It encourages use of capabilities that have long been inherent in the HTTP protocol, but seldom used.
When you have a URL (Uniform Resource Locator) and you point your browser to it by the address line, you're sending an HTTP request. Each HTTP request contains information that the server can use to know which HTTP response to send back to the client that issued the request.
Each request contains a URL, so the server knows which resource you want to access, but it can also contain a method. A method describes what to do with that resource.
But this "method" concept wasn't used very often.
Usually, people would just link to pages via the GET method, and issue any type of updates (deletions, insertions, updates) via the POST method.
And because of that you couldn't treat one resource (URL) as a true resource in itself. You had to have separate URLs for deletion, insertion or update of the same resource. For example:
http://...com/posts/create- POST request -> Goes to posts.create() method in the server
http://...com/posts/1/show- GET request -> Goes to posts.show(1) method in the server
http://...com/posts/1/delete - POST request -> Goes to posts.delete(1) method in the server
http://...com/posts/1/edit- POST request -> Goes to posts.edit(1) method in the server
With REST, you create forms that are smarter because they use other HTTP methods aside of POST, and program your server to be able to distinguish between methods, not only URLS. So for example:
http://...com/posts - POST request -> Goes to posts.create() method in the server
http://...com/posts/1 - GET request -> Goes to posts.show(1) method in the server
http://...com/posts/1 - DELETE request -> Goes to posts.delete(1) method in the server
http://...com/posts/1 - PUT request -> Goes to posts.edit(1) method in the server
Remember, a single URL describes a single resource. A single post is a single resource.
With REST you treat resources the way they were meant to be treated. You're telling the server which resource you want to handle, and how to handle it.
There are many other features to "RESTful architecture", which you can read about in Wikipedia, other articles or books, if you're interested. There isn't a whole lot more to CRUD itself, on the other hand.
In reading the answers, I see a surprising and what I consider to be incorrect level of not acknowledging the similarities between the concepts.
I believe that the correct way to understand REST is to think of it as "CRUD for HTTP resources". If you understand what an HTTP resource is (its not the same as a database record obviously) and you know what CRUD is, then describing REST as "CRUD for HTTP resources" is a correct and succinct way to convey the essence of REST.
– Jason Livesay May 07 '14 at 08:30