What happens if the server does NOT have a recv routine to "flush" the buffer?
The receive buffer that corresponds to this socket will fill up. When that has happened, UDP will silently discard incoming datagrams. TCP will discard incoming datagrams and not acknowledge them, triggering congestion control (halving the window size under Reno/XP or switching to the delay-window under CompoundTCP/Vista+).
When you remove some data from the buffer, UDP will resume accepting datagrams as if nothing had happened (it's your problem to figure out that you lost data!), and TCP will continue accepting and acknowledging packets, gradually increasing the window size again (data in the simulated stream will be consistent as if nothing was dropped, ever).
Does the buffer reside in your own process or in Windows?
It could be both, there is no urgent requirement for either, as long as it is managed/owned by the library layer it could as well reside in user space (though it's practically in kernel space). This is a detail that isn't important though, since you have no way of directly accessing the raw buffer either way. You can only access it via the API provided by your networking library (either Winsock functions or Berkeley-like socket functions).
Is it also possible to "DDos" still?
Yes. A DDoS is an attack that physically saturates the network cable. It does not matter a lot (or, at all) what you do on the software side. A DDoS needs to be addressed at a higher network layer (one that you usually don't have access to!). Once the rogue traffic made it past the "fat pipes" onto your server's subnet (or onto the router connecting it upstream), there is nothing more you can do.
Networks come in different physical (optical or electric) and logical (e.g. token) flavors, but in either case, there can only be one sender at any time on the cable. If someone saturates your line's capacity with a DDoS, neither you nor the router will be able to put packets on the wire, except occasionally, by chance. Routers, however, are built to have short forward queues and discard packets quickly when the queue fills up, so practically you're out of luck.